* Steven Rostedt (rostedt@xxxxxxxxxxx) wrote: > This adds the task comm and pid to the trace output. This gives the > output like: > > CPU 0: sshd:2605 [<ffffffff80251858>] remove_wait_queue+0xc/0x4a <-- [<ffffffff802ad7be>] free_poll_entry+0x1e/0x2a > CPU 2: bash:2610 [<ffffffff8038c3aa>] tty_check_change+0x9/0xb6 <-- [<ffffffff8038d295>] tty_ioctl+0x59f/0xcdd > CPU 0: sshd:2605 [<ffffffff80491ec6>] _spin_lock_irqsave+0xe/0x81 <-- [<ffffffff80251863>] remove_wait_queue+0x17/0x4a > CPU 2: bash:2610 [<ffffffff8024e2f7>] find_vpid+0x9/0x24 <-- [<ffffffff8038d325>] tty_ioctl+0x62f/0xcdd > CPU 0: sshd:2605 [<ffffffff804923ec>] _spin_unlock_irqrestore+0x9/0x3a <-- [<ffffffff80251891>] remove_wait_queue+0x45/0x4a > CPU 0: sshd:2605 [<ffffffff802a18b3>] fput+0x9/0x1b <-- [<ffffffff802ad7c6>] free_poll_entry+0x26/0x2a > > > Signed-off-by: Steven Rostedt <srostedt@xxxxxxxxxx> > --- > lib/mcount/tracer.c | 6 +++++- > lib/mcount/tracer.h | 3 +++ > 2 files changed, 8 insertions(+), 1 deletion(-) > > Index: linux-compile.git/lib/mcount/tracer.c > =================================================================== > --- linux-compile.git.orig/lib/mcount/tracer.c 2008-01-02 23:17:21.000000000 -0500 > +++ linux-compile.git/lib/mcount/tracer.c 2008-01-02 23:17:44.000000000 -0500 > @@ -34,6 +34,7 @@ mctracer_add_trace_entry(struct mctracer > { > unsigned long idx, idx_next; > struct mctracer_entry *entry; > + struct task_struct *tsk = current; Aren't there situations, like in the middle of a context switch, where current is not valid ? Is also poses a problem for early boot, and NMI tracing. > > idx = tr->trace_idx[cpu]; > idx_next = idx + 1; > @@ -52,6 +53,8 @@ mctracer_add_trace_entry(struct mctracer > entry->idx = atomic_inc_return(&tr->cnt); > entry->ip = ip; > entry->parent_ip = parent_ip; > + entry->pid = tsk->pid; > + memcpy(entry->comm, tsk->comm, TASK_COMM_LEN); > } > > static inline notrace void trace_function(const unsigned long ip, > @@ -223,7 +226,8 @@ static int s_show(struct seq_file *m, vo > return -1; > } > > - seq_printf(m, " CPU %d: ", iter->cpu); > + seq_printf(m, "CPU %d: ", iter->cpu); > + seq_printf(m, "%s:%d ", iter->ent->comm, iter->ent->pid); > seq_print_ip_sym(m, iter->ent->ip); > if (iter->ent->parent_ip) { > seq_printf(m, " <-- "); > Index: linux-compile.git/lib/mcount/tracer.h > =================================================================== > --- linux-compile.git.orig/lib/mcount/tracer.h 2008-01-02 23:16:15.000000000 -0500 > +++ linux-compile.git/lib/mcount/tracer.h 2008-01-02 23:17:44.000000000 -0500 > @@ -2,11 +2,14 @@ > #define _LINUX_MCOUNT_TRACER_H > > #include <asm/atomic.h> > +#include <linux/sched.h> > > struct mctracer_entry { > unsigned long idx; > unsigned long ip; > unsigned long parent_ip; > + char comm[TASK_COMM_LEN]; > + pid_t pid; > }; > > struct mctracer_trace { > > -- -- Mathieu Desnoyers Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68 - To unsubscribe from this list: send the line "unsubscribe sparclinux" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html