lkml.org 
[lkml]   [2008]   [Sep]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] [RFC] tracehook: Hook in syscall tracing markers.
    Hi Paul,

    > At kernel summit, the idea that syscall tracing was generally desirable
    > for tracing was mentioned several times, as was the argument that kernel
    > developers aren't placing markers in meaningful locations. This is a
    > simple patch to try and do that for the syscall case.
    >
    > Presently LTTng attempts to litter these trace markers all over the
    > architecture code, primarily to get around the fact that there was no
    > generic way to get at this information before. Now that platforms are
    > starting to do their syscall entry/exit notifiers through tracehook and
    > we have the asm/syscall.h interface, all of this information can be
    > generically abstracted.
    >
    > Signed-off-by: Paul Mundt <lethal@linux-sh.org>
    >

    I think marriage between tracehook and generic marker is very good idea.
    at least, instruction pointer and return value are definitly useful.

    but...
    Have you seen Mathieu's tracepoint patch?
    I recommend to use tracepoint insted use marker directly.


    > ---
    >
    > include/linux/tracehook.h | 7 +++++++
    > 1 file changed, 7 insertions(+)
    >
    > diff --git a/include/linux/tracehook.h b/include/linux/tracehook.h
    > index 6186a78..481ff45 100644
    > --- a/include/linux/tracehook.h
    > +++ b/include/linux/tracehook.h
    > @@ -49,6 +49,9 @@
    > #include <linux/sched.h>
    > #include <linux/ptrace.h>
    > #include <linux/security.h>
    > +#include <linux/marker.h>
    > +#include <asm/syscall.h>
    > +
    > struct linux_binprm;
    >
    > /**
    > @@ -112,6 +115,8 @@ static inline __must_check int tracehook_report_syscall_entry(
    > struct pt_regs *regs)
    > {
    > ptrace_report_syscall(regs);
    > + trace_mark(kernel_arch_syscall_entry, "syscall_id %ld ip #p%ld",
    > + syscall_get_nr(NULL, regs), instruction_pointer(regs));
    > return 0;
    > }
    >
    > @@ -135,6 +140,8 @@ static inline __must_check int tracehook_report_syscall_entry(
    > static inline void tracehook_report_syscall_exit(struct pt_regs *regs, int step)
    > {
    > ptrace_report_syscall(regs);
    > + trace_mark(kernel_arch_syscall_exit, "ret %ld",
    > + syscall_get_return_value(NULL, regs));
    > }




    \
     
     \ /
      Last update: 2008-09-22 03:17    [W:0.024 / U:0.424 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site