All of lore.kernel.org
 help / color / mirror / Atom feed
From: Masami Hiramatsu <mhiramat@redhat.com>
To: "Frédéric Weisbecker" <fweisbec@gmail.com>
Cc: Steven Rostedt <rostedt@goodmis.org>, Ingo Molnar <mingo@elte.hu>,
	lkml <linux-kernel@vger.kernel.org>,
	systemtap <systemtap@sources.redhat.com>,
	DLE <dle-develop@lists.sourceforge.net>,
	Thomas Gleixner <tglx@linutronix.de>,
	Arnaldo Carvalho de Melo <acme@redhat.com>,
	Mike Galbraith <efault@gmx.de>, Paul Mackerras <paulus@samba.org>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Christoph Hellwig <hch@infradead.org>,
	Ananth N Mavinakayanahalli <ananth@in.ibm.com>,
	Jim Keniston <jkenisto@us.ibm.com>,
	"Frank Ch. Eigler" <fche@redhat.com>
Subject: Re: [PATCH tracing/kprobes v4] perf: Add perf probe subcommand for kprobe-event setup helper
Date: Mon, 12 Oct 2009 10:40:25 -0400	[thread overview]
Message-ID: <4AD33FD9.5080207@redhat.com> (raw)
In-Reply-To: <c62985530910120331g42ff49a3pd043ef9c6923143e@mail.gmail.com>

Frédéric Weisbecker wrote:
> 2009/10/8 Masami Hiramatsu <mhiramat@redhat.com>:
>> Add perf probe subcommand for kprobe-event setup helper to perf command.
>> This allows user to define kprobe events by C expressions (C line numbers,
>> C function names, and C local variables).
>>
>> Usage
>> -----
>>  perf probe [<options>] -P 'PROBEDEF' [-P 'PROBEDEF' ...]
>>
>>    -k, --vmlinux <file>  vmlinux/module pathname
>>    -P, --probe <p|r:[GRP/]NAME FUNC[+OFFS][@SRC]|@SRC:LINE [ARG ...]>
>>                          probe point definition, where
>>                p:      kprobe probe
>>                r:      kretprobe probe
>>                GRP:    Group name (optional)
>>                NAME:   Event name
>>                FUNC:   Function name
>>                OFFS:   Offset from function entry (in byte)
>>                SRC:    Source code path
>>                LINE:   Line number
>>                ARG:    Probe argument (local variable name or
>>                        kprobe-tracer argument format is supported.)
>>
>> Changes in v4:
>>  - Add _GNU_SOURCE macro for strndup().
>>
>> Changes in v3:
>>  - Remove -r option because perf always be used for online kernel.
>>  - Check malloc/calloc results.
>>
>> Changes in v2:
>>  - Check synthesized string length.
>>  - Rename perf kprobe to perf probe.
>>  - Use spaces for separator and update usage comment.
>>  - Check error paths in parse_probepoint().
>>  - Check optimized-out variables.
>>
>> Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com>
>> Cc: Frederic Weisbecker <fweisbec@gmail.com>
>> Cc: Ingo Molnar <mingo@elte.hu>
>> Cc: Thomas Gleixner <tglx@linutronix.de>
>> Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
>> Cc: Steven Rostedt <rostedt@goodmis.org>
>> Cc: Mike Galbraith <efault@gmx.de>
>> Cc: Paul Mackerras <paulus@samba.org>
>> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
>> Cc: Christoph Hellwig <hch@infradead.org>
>> Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
>> Cc: Jim Keniston <jkenisto@us.ibm.com>
>> Cc: Frank Ch. Eigler <fche@redhat.com>
>> ---
>>
> [...]
>> +/* Default vmlinux search paths */
>> +#define NR_SEARCH_PATH 3
>> +const char *default_search_path[NR_SEARCH_PATH] = {
>> +"/lib/modules/%s/build/vmlinux",               /* Custom build kernel */
>> +"/usr/lib/debug/lib/modules/%s/vmlinux",       /* Red Hat debuginfo */
>> +"/boot/vmlinux-debug-%s",                      /* Ubuntu */
>> +};
> [...]
>> +static int open_default_vmlinux(void)
>> +{
>> +       struct utsname uts;
>> +       char fname[MAX_PATH_LEN];
>> +       int fd, ret, i;
>> +
>> +       ret = uname(&uts);
>> +       if (ret) {
>> +               debug("uname() failed.\n");
>> +               return -errno;
>> +       }
>> +       session.release = uts.release;
>> +       for (i = 0; i < NR_SEARCH_PATH; i++) {
>> +               ret = snprintf(fname, MAX_PATH_LEN,
>> +                              default_search_path[i], session.release);
>> +               if (ret >= MAX_PATH_LEN || ret < 0) {
>> +                       debug("Filename(%d,%s) is too long.\n", i, uts.release);
>> +                       errno = E2BIG;
>> +                       return -E2BIG;
>> +               }
>> +               debug("try to open %s\n", fname);
>> +               fd = open(fname, O_RDONLY);
>> +               if (fd >= 0)
>> +                       break;
>> +       }
>> +       return fd;
>> +}
> 
> 
> We have a kind of kernel path finder already inside perf. It might be
> encapsulated
> inside the load_kernel() helper, I don't remember exactly.
> 
> It would be better to make use of such centralized and already
> existing facility.

Agreed. AFAICS, load_kernel() is currently only for symbol resolver,
and we can make it for dwarf analyzer too.

> 
> The patchset looks good. I'll apply and push it soon.

Thanks!

-- 
Masami Hiramatsu

Software Engineer
Hitachi Computer Products (America), Inc.
Software Solutions Division

e-mail: mhiramat@redhat.com


  reply	other threads:[~2009-10-12 14:39 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-10-07 22:27 [PATCH tracing/kprobes v3 0/7] tracing/kprobes, perf: perf probe support take 3 Masami Hiramatsu
2009-10-07 22:27 ` [PATCH tracing/kprobes v3 1/7] tracing/kprobes: Add $ prefix to special variables Masami Hiramatsu
2009-10-12 19:33   ` Masami Hiramatsu
2009-10-17 10:03   ` [tip:perf/probes] " tip-bot for Masami Hiramatsu
2009-10-07 22:27 ` [PATCH tracing/kprobes v3 2/7] tracing/kprobes: Remove '$ra' special variable Masami Hiramatsu
2009-10-17 10:03   ` [tip:perf/probes] " tip-bot for Masami Hiramatsu
2009-10-07 22:27 ` [PATCH tracing/kprobes v3 3/7] tracing/kprobes: Rename special variables Masami Hiramatsu
2009-10-12 21:20   ` Masami Hiramatsu
2009-10-12 21:28     ` Frederic Weisbecker
2009-10-12 21:36       ` Masami Hiramatsu
2009-10-12 21:34         ` Frederic Weisbecker
2009-10-17 10:03   ` [tip:perf/probes] tracing/kprobes: Make special variable names more self-explainable tip-bot for Masami Hiramatsu
2009-10-07 22:28 ` [PATCH tracing/kprobes v3 4/7] tracing/kprobes: Avoid field name confliction Masami Hiramatsu
2009-10-12 10:10   ` Frédéric Weisbecker
2009-10-12 10:12     ` Frédéric Weisbecker
2009-10-12 17:37   ` Frederic Weisbecker
2009-10-12 19:13     ` Masami Hiramatsu
2009-10-12 19:48       ` Frederic Weisbecker
2009-10-12 20:22         ` Masami Hiramatsu
2009-10-12 21:16           ` Frederic Weisbecker
2009-10-17 10:03   ` [tip:perf/probes] " tip-bot for Masami Hiramatsu
2009-10-07 22:28 ` [PATCH tracing/kprobes v3 5/7] tracing/kprobes: Rename fixed field name Masami Hiramatsu
2009-10-17 10:04   ` [tip:perf/probes] tracing/kprobes: Robustify fixed field names against variable field names conflicts tip-bot for Masami Hiramatsu
2009-10-07 22:28 ` [PATCH tracing/kprobes v3 6/7] perf: Add perf probe subcommand for kprobe-event setup helper Masami Hiramatsu
2009-10-08 21:17   ` Masami Hiramatsu
2009-10-08 21:17     ` [PATCH tracing/kprobes v4] " Masami Hiramatsu
2009-10-12 10:31       ` Frédéric Weisbecker
2009-10-12 14:40         ` Masami Hiramatsu [this message]
2009-10-12 18:03       ` Frederic Weisbecker
2009-10-12 18:07       ` Frederic Weisbecker
2009-10-12 19:00         ` Masami Hiramatsu
2009-10-17 10:04       ` [tip:perf/probes] perf: Add perf probe subcommand, a " tip-bot for Masami Hiramatsu
2009-10-08 21:17     ` [PATCH tracing/kprobes v3 6/7] perf: Add perf probe subcommand for " Frederic Weisbecker
2009-10-12 19:03   ` Frederic Weisbecker
2009-10-12 19:07     ` Ingo Molnar
2009-10-12 19:31       ` Masami Hiramatsu
2009-10-07 22:28 ` [PATCH tracing/kprobes v3 7/7] perf: perf probe command supports without libdwarf Masami Hiramatsu
2009-10-17 10:04   ` [tip:perf/probes] perf probe: Add perf probe command support " tip-bot for Masami Hiramatsu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4AD33FD9.5080207@redhat.com \
    --to=mhiramat@redhat.com \
    --cc=a.p.zijlstra@chello.nl \
    --cc=acme@redhat.com \
    --cc=ananth@in.ibm.com \
    --cc=dle-develop@lists.sourceforge.net \
    --cc=efault@gmx.de \
    --cc=fche@redhat.com \
    --cc=fweisbec@gmail.com \
    --cc=hch@infradead.org \
    --cc=jkenisto@us.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=paulus@samba.org \
    --cc=rostedt@goodmis.org \
    --cc=systemtap@sources.redhat.com \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.