From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Ingo Molnar <mingo@kernel.org>
Cc: linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
Masami Hiramatsu <mhiramat@kernel.org>,
Paul Clarke <pc@us.ibm.com>, bhargavb <bhargavaramudu@gmail.com>,
linux-rt-users@vger.kernel.org,
Arnaldo Carvalho de Melo <acme@redhat.com>
Subject: [PATCH 23/34] perf probe: Add __return suffix for return events
Date: Thu, 14 Dec 2017 14:42:36 -0300 [thread overview]
Message-ID: <20171214174247.16841-24-acme@kernel.org> (raw)
In-Reply-To: <20171214174247.16841-1-acme@kernel.org>
From: Masami Hiramatsu <mhiramat@kernel.org>
Add __return suffix for function return events automatically. Without
this, user have to give --force option and will see the number suffix
for each event like "function_1", which is not easy to recognize.
Instead, this adds __return suffix to it automatically. E.g.
=====
# ./perf probe -x /lib64/libc-2.25.so 'malloc*%return'
Added new events:
probe_libc:malloc_printerr__return (on malloc*%return in /usr/lib64/libc-2.25.so)
probe_libc:malloc_consolidate__return (on malloc*%return in /usr/lib64/libc-2.25.so)
probe_libc:malloc_check__return (on malloc*%return in /usr/lib64/libc-2.25.so)
probe_libc:malloc_hook_ini__return (on malloc*%return in /usr/lib64/libc-2.25.so)
probe_libc:malloc__return (on malloc*%return in /usr/lib64/libc-2.25.so)
probe_libc:malloc_trim__return (on malloc*%return in /usr/lib64/libc-2.25.so)
probe_libc:malloc_usable_size__return (on malloc*%return in /usr/lib64/libc-2.25.so)
probe_libc:malloc_stats__return (on malloc*%return in /usr/lib64/libc-2.25.so)
probe_libc:malloc_info__return (on malloc*%return in /usr/lib64/libc-2.25.so)
probe_libc:mallochook__return (on malloc*%return in /usr/lib64/libc-2.25.so)
probe_libc:malloc_get_state__return (on malloc*%return in /usr/lib64/libc-2.25.so)
probe_libc:malloc_set_state__return (on malloc*%return in /usr/lib64/libc-2.25.so)
You can now use it in all perf tools, such as:
perf record -e probe_libc:malloc_set_state__return -aR sleep 1
=====
Reported-by: Arnaldo Carvalho de Melo <acme@kernel.org>
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Acked-by: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
Reviewed-by: Thomas Richter <tmricht@linux.vnet.ibm.com>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Paul Clarke <pc@us.ibm.com>
Cc: bhargavb <bhargavaramudu@gmail.com>
Cc: linux-rt-users@vger.kernel.org
Link: http://lkml.kernel.org/r/151275046418.24652.6696011972866498489.stgit@devbox
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/Documentation/perf-probe.txt | 2 +-
tools/perf/util/probe-event.c | 9 +++++----
2 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/tools/perf/Documentation/perf-probe.txt b/tools/perf/Documentation/perf-probe.txt
index d7e4869905f1..f96382692f42 100644
--- a/tools/perf/Documentation/perf-probe.txt
+++ b/tools/perf/Documentation/perf-probe.txt
@@ -170,7 +170,7 @@ Probe points are defined by following syntax.
or,
sdt_PROVIDER:SDTEVENT
-'EVENT' specifies the name of new event, if omitted, it will be set the name of the probed function. You can also specify a group name by 'GROUP', if omitted, set 'probe' is used for kprobe and 'probe_<bin>' is used for uprobe.
+'EVENT' specifies the name of new event, if omitted, it will be set the name of the probed function, and for return probes, a "\_\_return" suffix is automatically added to the function name. You can also specify a group name by 'GROUP', if omitted, set 'probe' is used for kprobe and 'probe_<bin>' is used for uprobe.
Note that using existing group name can conflict with other events. Especially, using the group name reserved for kernel modules can hide embedded events in the
modules.
'FUNC' specifies a probed function name, and it may have one of the following options; '+OFFS' is the offset from function entry address in bytes, ':RLN' is the relative-line number from function entry line, and '%return' means that it probes function return. And ';PTN' means lazy matching pattern (see LAZY MATCHING). Note that ';PTN' must be the end of the probe point definition. In addition, '@SRC' specifies a source file which has that function.
diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c
index 7e582547ac07..a68141d360b0 100644
--- a/tools/perf/util/probe-event.c
+++ b/tools/perf/util/probe-event.c
@@ -2573,7 +2573,8 @@ int show_perf_probe_events(struct strfilter *filter)
}
static int get_new_event_name(char *buf, size_t len, const char *base,
- struct strlist *namelist, bool allow_suffix)
+ struct strlist *namelist, bool ret_event,
+ bool allow_suffix)
{
int i, ret;
char *p, *nbase;
@@ -2590,7 +2591,7 @@ static int get_new_event_name(char *buf, size_t len, const char *base,
*p = '\0';
/* Try no suffix number */
- ret = e_snprintf(buf, len, "%s", nbase);
+ ret = e_snprintf(buf, len, "%s%s", nbase, ret_event ? "__return" : "");
if (ret < 0) {
pr_debug("snprintf() failed: %d\n", ret);
goto out;
@@ -2689,8 +2690,8 @@ static int probe_trace_event__set_name(struct probe_trace_event *tev,
group = PERFPROBE_GROUP;
/* Get an unused new event name */
- ret = get_new_event_name(buf, 64, event,
- namelist, allow_suffix);
+ ret = get_new_event_name(buf, 64, event, namelist,
+ tev->point.retprobe, allow_suffix);
if (ret < 0)
return ret;
--
2.13.6
next prev parent reply other threads:[~2017-12-14 17:42 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-12-14 17:42 [GIT PULL 00/34] perf/core improvements and fixes Arnaldo Carvalho de Melo
2017-12-14 17:42 ` [PATCH 01/34] perf stat: Define a structure for per-thread shadow stats Arnaldo Carvalho de Melo
2017-12-14 17:42 ` [PATCH 02/34] perf stat: Extend rbtree to support " Arnaldo Carvalho de Melo
2017-12-14 17:42 ` [PATCH 03/34] perf stat: Create the runtime_stat init/exit function Arnaldo Carvalho de Melo
2017-12-14 17:42 ` [PATCH 04/34] perf stat: Update per-thread shadow stats Arnaldo Carvalho de Melo
2017-12-14 17:42 ` [PATCH 05/34] perf stat: Print " Arnaldo Carvalho de Melo
2017-12-14 17:42 ` [PATCH 06/34] perf stat: Remove a set of shadow stats static variables Arnaldo Carvalho de Melo
2017-12-14 17:42 ` [PATCH 07/34] perf stat: Allocate shadow stats buffer for threads Arnaldo Carvalho de Melo
2017-12-14 17:42 ` [PATCH 08/34] perf stat: Update or print per-thread stats Arnaldo Carvalho de Melo
2017-12-14 17:42 ` [PATCH 09/34] perf thread_map: Enumerate all threads from /proc Arnaldo Carvalho de Melo
2017-12-14 17:42 ` [PATCH 10/34] perf stat: Remove --per-thread pid/tid limitation Arnaldo Carvalho de Melo
2017-12-14 17:42 ` [PATCH 11/34] perf stat: Resort '--per-thread' result Arnaldo Carvalho de Melo
2017-12-14 17:42 ` [PATCH 12/34] perf utils: Move is_directory() to path.h Arnaldo Carvalho de Melo
2017-12-14 17:42 ` [PATCH 13/34] perf test: Handle properly readdir DT_UNKNOWN Arnaldo Carvalho de Melo
2017-12-14 17:42 ` [PATCH 14/34] perf perf: Remove duplicate includes Arnaldo Carvalho de Melo
2017-12-14 17:42 ` [PATCH 15/34] tools include s390: Grab a copy of arch/s390/include/uapi/asm/unistd.h Arnaldo Carvalho de Melo
2017-12-14 17:42 ` [PATCH 16/34] perf s390: Generate system call table from asm/unistd.h Arnaldo Carvalho de Melo
2017-12-14 17:42 ` [PATCH 17/34] perf trace: Use generated syscall table on s390 too Arnaldo Carvalho de Melo
2017-12-14 17:42 ` [PATCH 18/34] perf annotate: Get the cpuid from evsel->evlist->env in symbol__annotate() Arnaldo Carvalho de Melo
2017-12-14 17:42 ` [PATCH 19/34] perf annotate: Use perf_env when obtaining the arch name Arnaldo Carvalho de Melo
2017-12-14 17:42 ` [PATCH 20/34] perf env: Adopt perf_env__arch() from the annotate code Arnaldo Carvalho de Melo
2017-12-14 17:42 ` [PATCH 21/34] perf probe: Add warning message if there is unexpected event name Arnaldo Carvalho de Melo
2017-12-14 17:42 ` [PATCH 22/34] perf probe: Cut off the version suffix from " Arnaldo Carvalho de Melo
2017-12-14 17:42 ` Arnaldo Carvalho de Melo [this message]
2017-12-14 17:42 ` [PATCH 24/34] perf probe: Find versioned symbols from map Arnaldo Carvalho de Melo
2017-12-14 17:42 ` [PATCH 25/34] perf string: Add {strdup,strpbrk}_esc() Arnaldo Carvalho de Melo
2017-12-14 17:42 ` [PATCH 26/34] perf probe: Support escaped character in parser Arnaldo Carvalho de Melo
2017-12-14 17:42 ` [PATCH 27/34] perf evsel: Fix swap for samples with raw data Arnaldo Carvalho de Melo
2017-12-14 17:42 ` [PATCH 28/34] perf test shell: Fix check open filename arg using 'perf trace' Arnaldo Carvalho de Melo
2017-12-14 17:42 ` [PATCH 29/34] tools headers: Synchronize KVM arch ABI headers Arnaldo Carvalho de Melo
2017-12-14 17:42 ` [PATCH 30/34] tools headers: Synchronize kernel x86 UAPI headers Arnaldo Carvalho de Melo
2017-12-14 17:42 ` [PATCH 31/34] tools arch s390: Do not include header files from the kernel sources Arnaldo Carvalho de Melo
2017-12-14 17:42 ` [PATCH 32/34] Revert "perf s390: Always build with -fPIC" Arnaldo Carvalho de Melo
2017-12-14 17:42 ` [PATCH 33/34] perf s390: Always build with -fPIC Arnaldo Carvalho de Melo
2017-12-14 17:42 ` [PATCH 34/34] perf evsel: Enable ignore_missing_thread for pid option Arnaldo Carvalho de Melo
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=20171214174247.16841-24-acme@kernel.org \
--to=acme@kernel.org \
--cc=acme@redhat.com \
--cc=bhargavaramudu@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=linux-rt-users@vger.kernel.org \
--cc=mhiramat@kernel.org \
--cc=mingo@kernel.org \
--cc=pc@us.ibm.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).