diff options
author | jeff <jeff@FreeBSD.org> | 2012-12-19 20:10:00 +0000 |
---|---|---|
committer | jeff <jeff@FreeBSD.org> | 2012-12-19 20:10:00 +0000 |
commit | 0a985cfcdeb6ea9385d67b191d021ed1b74c3702 (patch) | |
tree | cd571f104bffb0f3f5a4efd15e32b9a8308f6e50 /sys/kern/subr_syscall.c | |
parent | c3865e85e8e1cef7a04d07ee0792b609bb665706 (diff) | |
download | FreeBSD-src-0a985cfcdeb6ea9385d67b191d021ed1b74c3702.zip FreeBSD-src-0a985cfcdeb6ea9385d67b191d021ed1b74c3702.tar.gz |
- Add new machine parsable KTR macros for timing events.
- Use this new format to automatically handle syscalls and VOPs. This
changes the earlier format but is still human readable.
Sponsored by: EMC / Isilon Storage Division
Diffstat (limited to 'sys/kern/subr_syscall.c')
-rw-r--r-- | sys/kern/subr_syscall.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/sys/kern/subr_syscall.c b/sys/kern/subr_syscall.c index fe5cd0e..3dcfcf5 100644 --- a/sys/kern/subr_syscall.c +++ b/sys/kern/subr_syscall.c @@ -77,13 +77,12 @@ syscallenter(struct thread *td, struct syscall_args *sa) if (KTRPOINT(td, KTR_SYSCALL)) ktrsyscall(sa->code, sa->narg, sa->args); #endif - - CTR6(KTR_SYSC, -"syscall: td=%p pid %d %s (%#lx, %#lx, %#lx)", - td, td->td_proc->p_pid, syscallname(p, sa->code), - sa->args[0], sa->args[1], sa->args[2]); + KTR_START4(KTR_SYSC, "syscall", syscallname(p, sa->code), + td, "pid:%d", td->td_proc->p_pid, "arg0:%p", sa->args[0], + "arg1:%p", sa->args[1], "arg2:%p", sa->args[2]); if (error == 0) { + STOPEVENT(p, S_SCE, sa->narg); if (p->p_flag & P_TRACED && p->p_stops & S_PT_SCE) { PROC_LOCK(p); @@ -150,10 +149,12 @@ syscallenter(struct thread *td, struct syscall_args *sa) sa->callp, NULL, (error) ? -1 : td->td_retval[0]); #endif syscall_thread_exit(td, sa->callp); - CTR4(KTR_SYSC, "syscall: p=%p error=%d return %#lx %#lx", - p, error, td->td_retval[0], td->td_retval[1]); } retval: + KTR_STOP4(KTR_SYSC, "syscall", syscallname(p, sa->code), + td, "pid:%d", td->td_proc->p_pid, "error:%d", error, + "retval0:%#lx", td->td_retval[0], "retval1:%#lx", + td->td_retval[1]); if (traced) { PROC_LOCK(p); td->td_dbgflags &= ~TDB_SCE; @@ -176,9 +177,6 @@ syscallret(struct thread *td, int error, struct syscall_args *sa __unused) */ userret(td, td->td_frame); - CTR4(KTR_SYSC, "syscall %s exit thread %p pid %d proc %s", - syscallname(p, sa->code), td, td->td_proc->p_pid, td->td_name); - #ifdef KTRACE if (KTRPOINT(td, KTR_SYSRET)) { ktrsysret(sa->code, (td->td_pflags & TDP_NERRNO) == 0 ? |