[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:
committed by
Linus Torvalds
parent
29ac1c2142
commit
469226a431
@@ -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
|
||||||
|
@@ -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
|
|
||||||
|
@@ -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/
|
||||||
|
@@ -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
|
|
||||||
}
|
}
|
||||||
|
@@ -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();
|
|
||||||
}
|
|
@@ -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(®s->regs);
|
sc = UPT_SC(®s->regs);
|
||||||
SC_START_SYSCALL(sc);
|
SC_START_SYSCALL(sc);
|
||||||
|
|
||||||
syscall = UPT_SYSCALL_NR(®s->regs);
|
syscall = UPT_SYSCALL_NR(®s->regs);
|
||||||
|
|
||||||
#ifdef CONFIG_SYSCALL_DEBUG
|
|
||||||
index = record_syscall_start(syscall);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
syscall_trace(®s->regs, 0);
|
syscall_trace(®s->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(®s->regs, 1);
|
syscall_trace(®s->regs, 1);
|
||||||
#ifdef CONFIG_SYSCALL_DEBUG
|
|
||||||
record_syscall_end(index, result);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
@@ -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;
|
||||||
|
Reference in New Issue
Block a user