add bpf_raw_tracepoint_open(const char *name, int prog_fd) api to libbpf
Unified · Split
| @@ -94,6 +94,7 @@ enum bpf_cmd { · 93 unmodified lines | ||
| 94 | 94 | BPF_MAP_GET_FD_BY_ID, |
| 95 | 95 | BPF_OBJ_GET_INFO_BY_FD, |
| 96 | 96 | BPF_PROG_QUERY, |
| 97 | + BPF_RAW_TRACEPOINT_OPEN, | |
| 97 | 98 | }; |
| 98 | 99 | |
| 99 | 100 | enum bpf_map_type { |
| @@ -134,6 +135,7 @@ enum bpf_prog_type { · 34 unmodified lines | ||
| 134 | 135 | BPF_PROG_TYPE_SK_SKB, |
| 135 | 136 | BPF_PROG_TYPE_CGROUP_DEVICE, |
| 136 | 137 | BPF_PROG_TYPE_SK_MSG, |
| 138 | + BPF_PROG_TYPE_RAW_TRACEPOINT, | |
| 137 | 139 | }; |
| 138 | 140 | |
| 139 | 141 | enum bpf_attach_type { |
| @@ -344,6 +346,11 @@ union bpf_attr { · 204 unmodified lines | ||
| 344 | 346 | __aligned_u64 prog_ids; |
| 345 | 347 | __u32 prog_cnt; |
| 346 | 348 | } query; |
| 349 | + | |
| 350 | + struct { | |
| 351 | + __u64 name; | |
| 352 | + __u32 prog_fd; | |
| 353 | + } raw_tracepoint; | |
| 347 | 354 | } __attribute__((aligned(8))); |
| 348 | 355 | |
| 349 | 356 | /* BPF helper function descriptions: |
| @@ -1151,4 +1158,8 @@ struct bpf_cgroup_dev_ctx { · 801 unmodified lines | ||
| 1151 | 1158 | __u32 minor; |
| 1152 | 1159 | }; |
| 1153 | 1160 | |
| 1161 | +struct bpf_raw_tracepoint_args { | |
| 1162 | + __u64 args[0]; | |
| 1163 | +}; | |
| 1164 | + | |
| 1154 | 1165 | #endif /* _UAPI__LINUX_BPF_H__ */ |
| @@ -428,6 +428,17 @@ int bpf_obj_get_info_by_fd(int prog_fd, void *info, __u32 *info_len) · 427 unmodified lines | ||
| 428 | 428 | return err; |
| 429 | 429 | } |
| 430 | 430 | |
| 431 | +int bpf_raw_tracepoint_open(const char *name, int prog_fd) | |
| 432 | +{ | |
| 433 | + union bpf_attr attr; | |
| 434 | + | |
| 435 | + bzero(&attr, sizeof(attr)); | |
| 436 | + attr.raw_tracepoint.name = ptr_to_u64(name); | |
| 437 | + attr.raw_tracepoint.prog_fd = prog_fd; | |
| 438 | + | |
| 439 | + return sys_bpf(BPF_RAW_TRACEPOINT_OPEN, &attr, sizeof(attr)); | |
| 440 | +} | |
| 441 | + | |
| 431 | 442 | int bpf_set_link_xdp_fd(int ifindex, int fd, __u32 flags) |
| 432 | 443 | { |
| 433 | 444 | struct sockaddr_nl sa; |
| @@ -79,4 +79,5 @@ int bpf_map_get_fd_by_id(__u32 id); · 78 unmodified lines | ||
| 79 | 79 | int bpf_obj_get_info_by_fd(int prog_fd, void *info, __u32 *info_len); |
| 80 | 80 | int bpf_prog_query(int target_fd, enum bpf_attach_type type, __u32 query_flags, |
| 81 | 81 | __u32 *attach_flags, __u32 *prog_ids, __u32 *prog_cnt); |
| 82 | +int bpf_raw_tracepoint_open(const char *name, int prog_fd); | |
| 82 | 83 | #endif |