diff options
author | Ingo Molnar <mingo@kernel.org> | 2016-12-20 20:13:37 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2016-12-20 20:13:37 +0100 |
commit | 037569172083a59c0cc5b66c5e1cf80dcf27ebb7 (patch) | |
tree | de00115c5bbf4b55f8f5ac5e6e990e2aacf7a044 /tools/lib/bpf/bpf.c | |
parent | uprobes: Fix uprobes on MIPS, allow for a cache flush after ixol breakpoint c... (diff) | |
parent | samples/bpf: Move open_raw_sock to separate header (diff) | |
download | linux-037569172083a59c0cc5b66c5e1cf80dcf27ebb7.tar.xz linux-037569172083a59c0cc5b66c5e1cf80dcf27ebb7.zip |
Merge tag 'perf-core-for-mingo-20161220' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/urgent
Pull perf/core improvements and fixes:
New features:
- Introduce 'perf sched timehist --idle', to analyse processes
going to/from idle state (Namhyung Kim)
Fixes:
- Allow 'perf record -u user' to continue when facing races with threads
going away after having scanned them via /proc (Jiri Olsa)
- Fix 'perf mem' --all-user/--all-kernel options (Jiri Olsa)
- Support jumps with multiple arguments (Ravi Bangoria)
- Fix jumps to before the function where they are located (Ravi Bangoria)
- Fix lock-pi help string (Davidlohr Bueso)
- Fix build of 'perf trace' in odd systems such as a RHEL PPC one (Jiri Olsa)
- Do not overwrite valid build id in 'perf diff' (Kan Liang)
- Don't throw error for zero length symbols, allowing the use of the TUI
in PowerPC, where such symbols became more common recently (Ravi Bangoria)
Infrastructure changes:
- Switch of samples/bpf/ to use tools/lib/bpf, removing libbpf
duplication (Joe Stringer)
- Move headers check into bash script (Jiri Olsa)
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/lib/bpf/bpf.c')
-rw-r--r-- | tools/lib/bpf/bpf.c | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/tools/lib/bpf/bpf.c b/tools/lib/bpf/bpf.c index 8143536b462a..3ddb58a36d3c 100644 --- a/tools/lib/bpf/bpf.c +++ b/tools/lib/bpf/bpf.c @@ -54,7 +54,7 @@ static int sys_bpf(enum bpf_cmd cmd, union bpf_attr *attr, } int bpf_create_map(enum bpf_map_type map_type, int key_size, - int value_size, int max_entries) + int value_size, int max_entries, __u32 map_flags) { union bpf_attr attr; @@ -64,13 +64,14 @@ int bpf_create_map(enum bpf_map_type map_type, int key_size, attr.key_size = key_size; attr.value_size = value_size; attr.max_entries = max_entries; + attr.map_flags = map_flags; return sys_bpf(BPF_MAP_CREATE, &attr, sizeof(attr)); } int bpf_load_program(enum bpf_prog_type type, struct bpf_insn *insns, size_t insns_cnt, char *license, - u32 kern_version, char *log_buf, size_t log_buf_sz) + __u32 kern_version, char *log_buf, size_t log_buf_sz) { int fd; union bpf_attr attr; @@ -98,7 +99,7 @@ int bpf_load_program(enum bpf_prog_type type, struct bpf_insn *insns, } int bpf_map_update_elem(int fd, void *key, void *value, - u64 flags) + __u64 flags) { union bpf_attr attr; @@ -166,3 +167,26 @@ int bpf_obj_get(const char *pathname) return sys_bpf(BPF_OBJ_GET, &attr, sizeof(attr)); } + +int bpf_prog_attach(int prog_fd, int target_fd, enum bpf_attach_type type) +{ + union bpf_attr attr; + + bzero(&attr, sizeof(attr)); + attr.target_fd = target_fd; + attr.attach_bpf_fd = prog_fd; + attr.attach_type = type; + + return sys_bpf(BPF_PROG_ATTACH, &attr, sizeof(attr)); +} + +int bpf_prog_detach(int target_fd, enum bpf_attach_type type) +{ + union bpf_attr attr; + + bzero(&attr, sizeof(attr)); + attr.target_fd = target_fd; + attr.attach_type = type; + + return sys_bpf(BPF_PROG_DETACH, &attr, sizeof(attr)); +} |