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.
Showing the changes to include/uapi/linux (1 of 1 file). Show all
Unified · Split
| @@ -380,10 +380,14 @@ struct perf_event_attr { · 379 unmodified lines | |||
| 380 | __u32 bp_type; | 380 | __u32 bp_type; |
| 381 | union { | 381 | union { |
| 382 | __u64 bp_addr; | 382 | __u64 bp_addr; |
| 383 | __u64 kprobe_func; /* for perf_kprobe */ | ||
| 384 | __u64 uprobe_path; /* for perf_uprobe */ | ||
| 383 | __u64 config1; /* extension of config */ | 385 | __u64 config1; /* extension of config */ |
| 384 | }; | 386 | }; |
| 385 | union { | 387 | union { |
| 386 | __u64 bp_len; | 388 | __u64 bp_len; |
| 389 | __u64 kprobe_addr; /* when kprobe_func == NULL */ | ||
| 390 | __u64 probe_offset; /* for perf_[k,u]probe */ | ||
| 387 | __u64 config2; /* extension of config1 */ | 391 | __u64 config2; /* extension of config1 */ |
| 388 | }; | 392 | }; |
| 389 | __u64 branch_sample_type; /* enum perf_branch_sample_type */ | 393 | __u64 branch_sample_type; /* enum perf_branch_sample_type */ |