Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b6989f35 authored by Joe Stringer's avatar Joe Stringer Committed by Arnaldo Carvalho de Melo
Browse files

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: default avatarJoe 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: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent f367540c
Loading
Loading
Loading
Loading
+22 −0
Original line number Original line Diff line number Diff line
@@ -1357,6 +1357,28 @@ int bpf_program__pin(struct bpf_program *prog, const char *path)
	return 0;
	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)
void bpf_object__close(struct bpf_object *obj)
{
{
	size_t i;
	size_t i;
+1 −0
Original line number Original line Diff line number Diff line
@@ -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,
int bpf_map__set_priv(struct bpf_map *map, void *priv,
		      bpf_map_clear_priv_t clear_priv);
		      bpf_map_clear_priv_t clear_priv);
void *bpf_map__priv(struct bpf_map *map);
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);
long libbpf_get_error(const void *ptr);