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 | BPF_MAP_GET_FD_BY_ID, | 94 | BPF_MAP_GET_FD_BY_ID, |
| 95 | BPF_OBJ_GET_INFO_BY_FD, | 95 | BPF_OBJ_GET_INFO_BY_FD, |
| 96 | BPF_PROG_QUERY, | 96 | BPF_PROG_QUERY, |
| 97 | BPF_RAW_TRACEPOINT_OPEN, | ||
| 97 | }; | 98 | }; |
| 98 | 99 | ||
| 99 | enum bpf_map_type { | 100 | enum bpf_map_type { |
| @@ -134,6 +135,7 @@ enum bpf_prog_type { · 34 unmodified lines | |||
| 134 | BPF_PROG_TYPE_SK_SKB, | 135 | BPF_PROG_TYPE_SK_SKB, |
| 135 | BPF_PROG_TYPE_CGROUP_DEVICE, | 136 | BPF_PROG_TYPE_CGROUP_DEVICE, |
| 136 | BPF_PROG_TYPE_SK_MSG, | 137 | BPF_PROG_TYPE_SK_MSG, |
| 138 | BPF_PROG_TYPE_RAW_TRACEPOINT, | ||
| 137 | }; | 139 | }; |
| 138 | 140 | ||
| 139 | enum bpf_attach_type { | 141 | enum bpf_attach_type { |
| @@ -344,6 +346,11 @@ union bpf_attr { · 204 unmodified lines | |||
| 344 | __aligned_u64 prog_ids; | 346 | __aligned_u64 prog_ids; |
| 345 | __u32 prog_cnt; | 347 | __u32 prog_cnt; |
| 346 | } query; | 348 | } query; |
| 349 | |||
| 350 | struct { | ||
| 351 | __u64 name; | ||
| 352 | __u32 prog_fd; | ||
| 353 | } raw_tracepoint; | ||
| 347 | } __attribute__((aligned(8))); | 354 | } __attribute__((aligned(8))); |
| 348 | 355 | ||
| 349 | /* BPF helper function descriptions: | 356 | /* BPF helper function descriptions: |
| @@ -1151,4 +1158,8 @@ struct bpf_cgroup_dev_ctx { · 801 unmodified lines | |||
| 1151 | __u32 minor; | 1158 | __u32 minor; |
| 1152 | }; | 1159 | }; |
| 1153 | 1160 | ||
| 1161 | struct bpf_raw_tracepoint_args { | ||
| 1162 | __u64 args[0]; | ||
| 1163 | }; | ||
| 1164 | |||
| 1154 | #endif /* _UAPI__LINUX_BPF_H__ */ | 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 | return err; | 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 | int bpf_set_link_xdp_fd(int ifindex, int fd, __u32 flags) | 442 | int bpf_set_link_xdp_fd(int ifindex, int fd, __u32 flags) |
| 432 | { | 443 | { |
| 433 | struct sockaddr_nl sa; | 444 | struct sockaddr_nl sa; |
| @@ -79,4 +79,5 @@ int bpf_map_get_fd_by_id(__u32 id); · 78 unmodified lines | |||
| 79 | int bpf_obj_get_info_by_fd(int prog_fd, void *info, __u32 *info_len); | 79 | int bpf_obj_get_info_by_fd(int prog_fd, void *info, __u32 *info_len); |
| 80 | int bpf_prog_query(int target_fd, enum bpf_attach_type type, __u32 query_flags, | 80 | int bpf_prog_query(int target_fd, enum bpf_attach_type type, __u32 query_flags, |
| 81 | __u32 *attach_flags, __u32 *prog_ids, __u32 *prog_cnt); | 81 | __u32 *attach_flags, __u32 *prog_ids, __u32 *prog_cnt); |
| 82 | int bpf_raw_tracepoint_open(const char *name, int prog_fd); | ||
| 82 | #endif | 83 | #endif |