History

libbpf: add bpf_raw_tracepoint_open helper

add bpf_raw_tracepoint_open(const char *name, int prog_fd) api to libbpf

Alexei Starovoitov committed 8 years ago

Commit a0fe3e51 parent c4f66993 files · +23 −0Browse files

Unified · Split

3 files
  1. tools/include/uapi/linux/bpf.h +11 −0
  2. tools/lib/bpf/bpf.c +11 −0
  3. tools/lib/bpf/bpf.h +1 −0
tools/include/uapi/linux/bpf.h+11−0
@@ -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
99enum bpf_map_type {100enum 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
139enum bpf_attach_type {141enum 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
1161struct bpf_raw_tracepoint_args {
1162 __u64 args[0];
1163};
1164
1154#endif /* _UAPI__LINUX_BPF_H__ */1165#endif /* _UAPI__LINUX_BPF_H__ */
tools/lib/bpf/bpf.c+11−0
@@ -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
431int 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
431int bpf_set_link_xdp_fd(int ifindex, int fd, __u32 flags)442int bpf_set_link_xdp_fd(int ifindex, int fd, __u32 flags)
432{443{
433 struct sockaddr_nl sa;444 struct sockaddr_nl sa;
tools/lib/bpf/bpf.h+1−0
@@ -79,4 +79,5 @@ int bpf_map_get_fd_by_id(__u32 id); · 78 unmodified lines
79int bpf_obj_get_info_by_fd(int prog_fd, void *info, __u32 *info_len);79int bpf_obj_get_info_by_fd(int prog_fd, void *info, __u32 *info_len);
80int bpf_prog_query(int target_fd, enum bpf_attach_type type, __u32 query_flags,80int 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);
82int bpf_raw_tracepoint_open(const char *name, int prog_fd);
82#endif83#endif

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t