perf/core: Prepare perf_event.h for new types: 'perf_kprobe' and 'perf_uprobe'
authorSong Liu <songliubraving@fb.com>
Wed, 6 Dec 2017 22:45:13 +0000 (14:45 -0800)
committerIngo Molnar <mingo@kernel.org>
Tue, 6 Feb 2018 09:18:04 +0000 (10:18 +0100)
Two new perf types, perf_kprobe and perf_uprobe, will be added to allow
creating [k,u]probe with perf_event_open. These [k,u]probe are associated
with the file decriptor created by perf_event_open(), thus are easy to
clean when the file descriptor is destroyed.

kprobe_func and uprobe_path are added to union config1 for pointers to
function name for kprobe or binary path for uprobe.

kprobe_addr and probe_offset are added to union config2 for kernel
address (when kprobe_func is NULL), or [k,u]probe offset.

Signed-off-by: Song Liu <songliubraving@fb.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Yonghong Song <yhs@fb.com>
Reviewed-by: Josef Bacik <jbacik@fb.com>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Cc: <daniel@iogearbox.net>
Cc: <davem@davemloft.net>
Cc: <kernel-team@fb.com>
Cc: <rostedt@goodmis.org>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/20171206224518.3598254-4-songliubraving@fb.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
include/uapi/linux/perf_event.h

index c77c9a2..5d49cfc 100644 (file)
@@ -380,10 +380,14 @@ struct perf_event_attr {
        __u32                   bp_type;
        union {
                __u64           bp_addr;
+               __u64           kprobe_func; /* for perf_kprobe */
+               __u64           uprobe_path; /* for perf_uprobe */
                __u64           config1; /* extension of config */
        };
        union {
                __u64           bp_len;
+               __u64           kprobe_addr; /* when kprobe_func == NULL */
+               __u64           probe_offset; /* for perf_[k,u]probe */
                __u64           config2; /* extension of config1 */
        };
        __u64   branch_sample_type; /* enum perf_branch_sample_type */