tools lib bpf: Add bpf_map__pin()
Add a new API to pin a BPF map to the filesystem. The user can specify the path full path within a BPF filesystem to pin the map. Signed-off-by: Joe Stringer <joe@ovn.org> Cc: Alexei Starovoitov <ast@fb.com> Cc: Daniel Borkmann <daniel@iogearbox.net> Cc: Wang Nan <wangnan0@huawei.com> Cc: netdev@vger.kernel.org Link: http://lkml.kernel.org/r/20170126212001.14103-3-joe@ovn.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
Родитель
f367540c8c
Коммит
b6989f35e8
|
@ -1357,6 +1357,28 @@ int bpf_program__pin(struct bpf_program *prog, const char *path)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int bpf_map__pin(struct bpf_map *map, const char *path)
|
||||
{
|
||||
int err;
|
||||
|
||||
err = check_path(path);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
if (map == NULL) {
|
||||
pr_warning("invalid map pointer\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (bpf_obj_pin(map->fd, path)) {
|
||||
pr_warning("failed to pin map: %s\n", strerror(errno));
|
||||
return -errno;
|
||||
}
|
||||
|
||||
pr_debug("pinned map '%s'\n", path);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void bpf_object__close(struct bpf_object *obj)
|
||||
{
|
||||
size_t i;
|
||||
|
|
|
@ -236,6 +236,7 @@ typedef void (*bpf_map_clear_priv_t)(struct bpf_map *, void *);
|
|||
int bpf_map__set_priv(struct bpf_map *map, void *priv,
|
||||
bpf_map_clear_priv_t clear_priv);
|
||||
void *bpf_map__priv(struct bpf_map *map);
|
||||
int bpf_map__pin(struct bpf_map *map, const char *path);
|
||||
|
||||
long libbpf_get_error(const void *ptr);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче