mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-23 04:34:11 +08:00
6430a94ead
perf buildid-cache --add <binary> scans given binary and add the SDT events to probe cache. "sdt_" prefix is appended for all SDT providers to avoid event-name clash with other pre-defined events. It is possible to use the cached SDT events as other cached events, via perf probe --add "sdt_<provider>:<event>=<event>". e.g. ---- # perf buildid-cache --add /lib/libc-2.17.so # perf probe --cache --list | head -n 5 /usr/lib/libc-2.17.so (a6fb821bdf53660eb2c29f778757aef294d3d392): sdt_libc:setjmp=setjmp sdt_libc:longjmp=longjmp sdt_libc:longjmp_target=longjmp_target sdt_libc:memory_heap_new=memory_heap_new # perf probe -x /usr/lib/libc-2.17.so \ -a sdt_libc:memory_heap_new=memory_heap_new Added new event: sdt_libc:memory_heap_new (on memory_heap_new in /usr/lib/libc-2.17.so) You can now use it in all perf tools, such as: perf record -e sdt_libc:memory_heap_new -aR sleep 1 # perf probe -l sdt_libc:memory_heap_new (on new_heap+183 in /usr/lib/libc-2.17.so) ---- Note that SDT event entries in probe-cache file is somewhat different from normal cached events. Normal one starts with "#", but SDTs are starting with "%". Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org> Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> Cc: Ananth N Mavinakayanahalli <ananth@linux.vnet.ibm.com> Cc: Brendan Gregg <brendan.d.gregg@gmail.com> Cc: Hemant Kumar <hemant@linux.vnet.ibm.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/146736025058.27797.13043265488541434502.stgit@devbox Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
51 lines
1.7 KiB
C
51 lines
1.7 KiB
C
#ifndef __PROBE_FILE_H
|
|
#define __PROBE_FILE_H
|
|
|
|
#include "strlist.h"
|
|
#include "strfilter.h"
|
|
#include "probe-event.h"
|
|
|
|
/* Cache of probe definitions */
|
|
struct probe_cache_entry {
|
|
struct list_head node;
|
|
bool sdt;
|
|
struct perf_probe_event pev;
|
|
char *spev;
|
|
struct strlist *tevlist;
|
|
};
|
|
|
|
struct probe_cache {
|
|
int fd;
|
|
struct list_head entries;
|
|
};
|
|
|
|
#define PF_FL_UPROBE 1
|
|
#define PF_FL_RW 2
|
|
|
|
int probe_file__open(int flag);
|
|
int probe_file__open_both(int *kfd, int *ufd, int flag);
|
|
struct strlist *probe_file__get_namelist(int fd);
|
|
struct strlist *probe_file__get_rawlist(int fd);
|
|
int probe_file__add_event(int fd, struct probe_trace_event *tev);
|
|
int probe_file__del_events(int fd, struct strfilter *filter);
|
|
int probe_file__get_events(int fd, struct strfilter *filter,
|
|
struct strlist *plist);
|
|
int probe_file__del_strlist(int fd, struct strlist *namelist);
|
|
|
|
struct probe_cache *probe_cache__new(const char *target);
|
|
int probe_cache__add_entry(struct probe_cache *pcache,
|
|
struct perf_probe_event *pev,
|
|
struct probe_trace_event *tevs, int ntevs);
|
|
int probe_cache__scan_sdt(struct probe_cache *pcache, const char *pathname);
|
|
int probe_cache__commit(struct probe_cache *pcache);
|
|
void probe_cache__purge(struct probe_cache *pcache);
|
|
void probe_cache__delete(struct probe_cache *pcache);
|
|
int probe_cache__filter_purge(struct probe_cache *pcache,
|
|
struct strfilter *filter);
|
|
struct probe_cache_entry *probe_cache__find(struct probe_cache *pcache,
|
|
struct perf_probe_event *pev);
|
|
struct probe_cache_entry *probe_cache__find_by_name(struct probe_cache *pcache,
|
|
const char *group, const char *event);
|
|
int probe_cache__show_all_caches(struct strfilter *filter);
|
|
#endif
|