Re: [RFC PATCH v3 21/37] bpf tools: Create eBPF maps defined in an object file

Jiri Olsa
2015-05-22T17:23:47Z

On Sun, May 17, 2015 at 10:56:46AM +0000, Wang Nan wrote:

SNIP

> + i * sizeof(struct bpf_map_def));
> +
> + if (obj->needs_swap) {
> + def.type = bswap_32(def.type);
> + def.key_size = bswap_32(def.key_size);
> + def.value_size = bswap_32(def.value_size);
> + def.max_entries = bswap_32(def.max_entries);
> + }
> +
> + *pfd = bpf_create_map(def.type,
> + def.key_size,
> + def.value_size,
> + def.max_entries);
> + if (*pfd < 0) {
> + size_t j;
> + int err = *pfd;
> +
> + pr_warning("failed to create map: %s\n",
> + strerror(errno));
> + for (j = 0; j < i; j++) {
> + close(obj->maps_fds[j]);
> + obj->maps_fds[j] = -1;
> + }
> + free(obj->maps_fds);
> + obj->maps_fds = NULL;

the close/free code above could go into separate function
and be used in bpf_unload_object

jirka