diff options
author | He Kuang <hekuang@huawei.com> | 2015-11-24 08:36:08 -0500 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2015-11-26 15:21:24 -0500 |
commit | 43798bf37215fe242e592fd4605d804e2da0781b (patch) | |
tree | 78938a19ac78dbc74c9d507ea3044b29ecb79e1c /tools | |
parent | dcdd184b60c3943fb678dcbaf899a26f845901ad (diff) |
bpf tools: Add helper function for updating bpf maps elements
Add bpf_map_update_elem() helper function which calls the sys_bpf
syscall to update elements in bpf maps. Upcoming patches will use it to
adjust data in map through the perf command line.
Signed-off-by: He Kuang <hekuang@huawei.com>
Cc: Alexei Starovoitov <ast@kernel.org>
Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Wang Nan <wangnan0@huawei.com>
Cc: Zefan Li <lizefan@huawei.com>
Cc: pi3orama@163.com
Link: http://lkml.kernel.org/r/1448372181-151723-4-git-send-email-wangnan0@huawei.com
Signed-off-by: Wang Nan <wangnan0@huawei.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/lib/bpf/bpf.c | 14 | ||||
-rw-r--r-- | tools/lib/bpf/bpf.h | 2 |
2 files changed, 16 insertions, 0 deletions
diff --git a/tools/lib/bpf/bpf.c b/tools/lib/bpf/bpf.c index a6331050ab79..5bdc6eab6852 100644 --- a/tools/lib/bpf/bpf.c +++ b/tools/lib/bpf/bpf.c | |||
@@ -83,3 +83,17 @@ int bpf_load_program(enum bpf_prog_type type, struct bpf_insn *insns, | |||
83 | log_buf[0] = 0; | 83 | log_buf[0] = 0; |
84 | return sys_bpf(BPF_PROG_LOAD, &attr, sizeof(attr)); | 84 | return sys_bpf(BPF_PROG_LOAD, &attr, sizeof(attr)); |
85 | } | 85 | } |
86 | |||
87 | int bpf_map_update_elem(int fd, void *key, void *value, | ||
88 | u64 flags) | ||
89 | { | ||
90 | union bpf_attr attr; | ||
91 | |||
92 | bzero(&attr, sizeof(attr)); | ||
93 | attr.map_fd = fd; | ||
94 | attr.key = ptr_to_u64(key); | ||
95 | attr.value = ptr_to_u64(value); | ||
96 | attr.flags = flags; | ||
97 | |||
98 | return sys_bpf(BPF_MAP_UPDATE_ELEM, &attr, sizeof(attr)); | ||
99 | } | ||
diff --git a/tools/lib/bpf/bpf.h b/tools/lib/bpf/bpf.h index 854b7361b784..a76465541292 100644 --- a/tools/lib/bpf/bpf.h +++ b/tools/lib/bpf/bpf.h | |||
@@ -20,4 +20,6 @@ int bpf_load_program(enum bpf_prog_type type, struct bpf_insn *insns, | |||
20 | u32 kern_version, char *log_buf, | 20 | u32 kern_version, char *log_buf, |
21 | size_t log_buf_sz); | 21 | size_t log_buf_sz); |
22 | 22 | ||
23 | int bpf_map_update_elem(int fd, void *key, void *value, | ||
24 | u64 flags); | ||
23 | #endif | 25 | #endif |