diff options
author | Yonghong Song <yhs@fb.com> | 2018-05-24 14:21:10 -0400 |
---|---|---|
committer | Alexei Starovoitov <ast@kernel.org> | 2018-05-24 21:18:19 -0400 |
commit | 30687ad94e57b53dd66950ab570203dfd1f9db34 (patch) | |
tree | ca414d4f6922bf85badda4e5d5dead9624e6709e /tools/lib | |
parent | 41bdc4b40ed6fb26c6acc655ed9a243a348709c9 (diff) |
tools/bpf: sync kernel header bpf.h and add bpf_task_fd_query in libbpf
Sync kernel header bpf.h to tools/include/uapi/linux/bpf.h and
implement bpf_task_fd_query() in libbpf. The test programs
in samples/bpf and tools/testing/selftests/bpf, and later bpftool
will use this libbpf function to query kernel.
Acked-by: Martin KaFai Lau <kafai@fb.com>
Signed-off-by: Yonghong Song <yhs@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'tools/lib')
-rw-r--r-- | tools/lib/bpf/bpf.c | 23 | ||||
-rw-r--r-- | tools/lib/bpf/bpf.h | 3 |
2 files changed, 26 insertions, 0 deletions
diff --git a/tools/lib/bpf/bpf.c b/tools/lib/bpf/bpf.c index 442b4cdfeb71..9ddc89dae962 100644 --- a/tools/lib/bpf/bpf.c +++ b/tools/lib/bpf/bpf.c | |||
@@ -643,3 +643,26 @@ retry: | |||
643 | 643 | ||
644 | return fd; | 644 | return fd; |
645 | } | 645 | } |
646 | |||
647 | int bpf_task_fd_query(int pid, int fd, __u32 flags, char *buf, __u32 *buf_len, | ||
648 | __u32 *prog_id, __u32 *fd_type, __u64 *probe_offset, | ||
649 | __u64 *probe_addr) | ||
650 | { | ||
651 | union bpf_attr attr = {}; | ||
652 | int err; | ||
653 | |||
654 | attr.task_fd_query.pid = pid; | ||
655 | attr.task_fd_query.fd = fd; | ||
656 | attr.task_fd_query.flags = flags; | ||
657 | attr.task_fd_query.buf = ptr_to_u64(buf); | ||
658 | attr.task_fd_query.buf_len = *buf_len; | ||
659 | |||
660 | err = sys_bpf(BPF_TASK_FD_QUERY, &attr, sizeof(attr)); | ||
661 | *buf_len = attr.task_fd_query.buf_len; | ||
662 | *prog_id = attr.task_fd_query.prog_id; | ||
663 | *fd_type = attr.task_fd_query.fd_type; | ||
664 | *probe_offset = attr.task_fd_query.probe_offset; | ||
665 | *probe_addr = attr.task_fd_query.probe_addr; | ||
666 | |||
667 | return err; | ||
668 | } | ||
diff --git a/tools/lib/bpf/bpf.h b/tools/lib/bpf/bpf.h index d12344f66d4e..0639a30a457d 100644 --- a/tools/lib/bpf/bpf.h +++ b/tools/lib/bpf/bpf.h | |||
@@ -107,4 +107,7 @@ int bpf_prog_query(int target_fd, enum bpf_attach_type type, __u32 query_flags, | |||
107 | int bpf_raw_tracepoint_open(const char *name, int prog_fd); | 107 | int bpf_raw_tracepoint_open(const char *name, int prog_fd); |
108 | int bpf_load_btf(void *btf, __u32 btf_size, char *log_buf, __u32 log_buf_size, | 108 | int bpf_load_btf(void *btf, __u32 btf_size, char *log_buf, __u32 log_buf_size, |
109 | bool do_log); | 109 | bool do_log); |
110 | int bpf_task_fd_query(int pid, int fd, __u32 flags, char *buf, __u32 *buf_len, | ||
111 | __u32 *prog_id, __u32 *fd_type, __u64 *probe_offset, | ||
112 | __u64 *probe_addr); | ||
110 | #endif | 113 | #endif |