[PATCH] uml: remove syscall debugging

Eliminate an unused debug option.

Signed-off-by: Jeff Dike <jdike@addtoit.com>
Cc: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
Jeff Dike 2006-07-10 04:45:13 -07:00 committed by Linus Torvalds
parent 29ac1c2142
commit 469226a431
7 changed files with 2 additions and 86 deletions

View file

@ -47,13 +47,4 @@ config GCOV
If you're involved in UML kernel development and want to use gcov, If you're involved in UML kernel development and want to use gcov,
say Y. If you're unsure, say N. say Y. If you're unsure, say N.
config SYSCALL_DEBUG
bool "Enable system call debugging"
depends on DEBUG_INFO
help
This adds some system debugging to UML, including keeping a ring buffer
with recent system calls and some global and per-task statistics.
If unsure, say N
endmenu endmenu

View file

@ -526,4 +526,3 @@ CONFIG_FORCED_INLINING=y
# CONFIG_RCU_TORTURE_TEST is not set # CONFIG_RCU_TORTURE_TEST is not set
# CONFIG_GPROF is not set # CONFIG_GPROF is not set
# CONFIG_GCOV is not set # CONFIG_GCOV is not set
# CONFIG_SYSCALL_DEBUG is not set

View file

@ -15,7 +15,6 @@ obj-y = config.o exec_kern.o exitcode.o \
obj-$(CONFIG_BLK_DEV_INITRD) += initrd.o obj-$(CONFIG_BLK_DEV_INITRD) += initrd.o
obj-$(CONFIG_GPROF) += gprof_syms.o obj-$(CONFIG_GPROF) += gprof_syms.o
obj-$(CONFIG_GCOV) += gmon_syms.o obj-$(CONFIG_GCOV) += gmon_syms.o
obj-$(CONFIG_SYSCALL_DEBUG) += syscall.o
obj-$(CONFIG_MODE_TT) += tt/ obj-$(CONFIG_MODE_TT) += tt/
obj-$(CONFIG_MODE_SKAS) += skas/ obj-$(CONFIG_MODE_SKAS) += skas/

View file

@ -18,11 +18,7 @@ void handle_syscall(union uml_pt_regs *r)
struct pt_regs *regs = container_of(r, struct pt_regs, regs); struct pt_regs *regs = container_of(r, struct pt_regs, regs);
long result; long result;
int syscall; int syscall;
#ifdef UML_CONFIG_SYSCALL_DEBUG
int index;
index = record_syscall_start(UPT_SYSCALL_NR(r));
#endif
syscall_trace(r, 0); syscall_trace(r, 0);
current->thread.nsyscalls++; current->thread.nsyscalls++;
@ -44,7 +40,4 @@ void handle_syscall(union uml_pt_regs *r)
REGS_SET_SYSCALL_RETURN(r->skas.regs, result); REGS_SET_SYSCALL_RETURN(r->skas.regs, result);
syscall_trace(r, 1); syscall_trace(r, 1);
#ifdef UML_CONFIG_SYSCALL_DEBUG
record_syscall_end(index, result);
#endif
} }

View file

@ -1,36 +0,0 @@
/*
* Copyright (C) 2002 Jeff Dike (jdike@karaya.com)
* Licensed under the GPL
*/
#include "kern_util.h"
#include "syscall.h"
#include "os.h"
struct {
int syscall;
int pid;
long result;
unsigned long long start;
unsigned long long end;
} syscall_record[1024];
int record_syscall_start(int syscall)
{
int max, index;
max = sizeof(syscall_record)/sizeof(syscall_record[0]);
index = next_syscall_index(max);
syscall_record[index].syscall = syscall;
syscall_record[index].pid = current_pid();
syscall_record[index].result = 0xdeadbeef;
syscall_record[index].start = os_nsecs();
return(index);
}
void record_syscall_end(int index, long result)
{
syscall_record[index].result = result;
syscall_record[index].end = os_nsecs();
}

View file

@ -21,18 +21,11 @@ void syscall_handler_tt(int sig, struct pt_regs *regs)
void *sc; void *sc;
long result; long result;
int syscall; int syscall;
#ifdef CONFIG_SYSCALL_DEBUG
int index;
#endif
sc = UPT_SC(&regs->regs); sc = UPT_SC(&regs->regs);
SC_START_SYSCALL(sc); SC_START_SYSCALL(sc);
syscall = UPT_SYSCALL_NR(&regs->regs); syscall = UPT_SYSCALL_NR(&regs->regs);
#ifdef CONFIG_SYSCALL_DEBUG
index = record_syscall_start(syscall);
#endif
syscall_trace(&regs->regs, 0); syscall_trace(&regs->regs, 0);
current->thread.nsyscalls++; current->thread.nsyscalls++;
@ -50,7 +43,4 @@ void syscall_handler_tt(int sig, struct pt_regs *regs)
SC_SET_SYSCALL_RETURN(sc, result); SC_SET_SYSCALL_RETURN(sc, result);
syscall_trace(&regs->regs, 1); syscall_trace(&regs->regs, 1);
#ifdef CONFIG_SYSCALL_DEBUG
record_syscall_end(index, result);
#endif
} }

View file

@ -188,10 +188,7 @@ int tracer(int (*init_proc)(void *), void *sp)
int status, pid = 0, sig = 0, cont_type, tracing = 0, op = 0; int status, pid = 0, sig = 0, cont_type, tracing = 0, op = 0;
int proc_id = 0, n, err, old_tracing = 0, strace = 0; int proc_id = 0, n, err, old_tracing = 0, strace = 0;
int local_using_sysemu = 0; int local_using_sysemu = 0;
#ifdef UML_CONFIG_SYSCALL_DEBUG
unsigned long eip = 0;
int last_index;
#endif
signal(SIGPIPE, SIG_IGN); signal(SIGPIPE, SIG_IGN);
setup_tracer_winch(); setup_tracer_winch();
tracing_pid = os_getpid(); tracing_pid = os_getpid();
@ -282,23 +279,6 @@ int tracer(int (*init_proc)(void *), void *sp)
else if(WIFSTOPPED(status)){ else if(WIFSTOPPED(status)){
proc_id = pid_to_processor_id(pid); proc_id = pid_to_processor_id(pid);
sig = WSTOPSIG(status); sig = WSTOPSIG(status);
#ifdef UML_CONFIG_SYSCALL_DEBUG
if(signal_index[proc_id] == 1024){
signal_index[proc_id] = 0;
last_index = 1023;
}
else last_index = signal_index[proc_id] - 1;
if(((sig == SIGPROF) || (sig == SIGVTALRM) ||
(sig == SIGALRM)) &&
(signal_record[proc_id][last_index].signal == sig)&&
(signal_record[proc_id][last_index].pid == pid))
signal_index[proc_id] = last_index;
signal_record[proc_id][signal_index[proc_id]].pid = pid;
gettimeofday(&signal_record[proc_id][signal_index[proc_id]].time, NULL);
eip = ptrace(PTRACE_PEEKUSR, pid, PT_IP_OFFSET, 0);
signal_record[proc_id][signal_index[proc_id]].addr = eip;
signal_record[proc_id][signal_index[proc_id]++].signal = sig;
#endif
if(proc_id == -1){ if(proc_id == -1){
sleeping_process_signal(pid, sig); sleeping_process_signal(pid, sig);
continue; continue;