mirror of
https://github.com/torvalds/linux
synced 2024-11-05 18:23:50 +00:00
libbpf: constify getter APIs
Add const qualifiers to bpf_object/bpf_program/bpf_map arguments for getter APIs. There is no need for them to not be const pointers. Verified that make -C tools/lib/bpf make -C tools/testing/selftests/bpf make -C tools/perf all build without warnings. Signed-off-by: Andrii Nakryiko <andriin@fb.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
This commit is contained in:
parent
4d18f6de6a
commit
a324aae32f
2 changed files with 72 additions and 70 deletions
|
@ -1663,7 +1663,8 @@ bpf_object__find_prog_by_idx(struct bpf_object *obj, int idx)
|
|||
}
|
||||
|
||||
struct bpf_program *
|
||||
bpf_object__find_program_by_title(struct bpf_object *obj, const char *title)
|
||||
bpf_object__find_program_by_title(const struct bpf_object *obj,
|
||||
const char *title)
|
||||
{
|
||||
struct bpf_program *pos;
|
||||
|
||||
|
@ -2589,8 +2590,8 @@ bpf_program__load(struct bpf_program *prog,
|
|||
return err;
|
||||
}
|
||||
|
||||
static bool bpf_program__is_function_storage(struct bpf_program *prog,
|
||||
struct bpf_object *obj)
|
||||
static bool bpf_program__is_function_storage(const struct bpf_program *prog,
|
||||
const struct bpf_object *obj)
|
||||
{
|
||||
return prog->idx == obj->efile.text_shndx && obj->has_pseudo_calls;
|
||||
}
|
||||
|
@ -3296,17 +3297,17 @@ bpf_object__next(struct bpf_object *prev)
|
|||
return next;
|
||||
}
|
||||
|
||||
const char *bpf_object__name(struct bpf_object *obj)
|
||||
const char *bpf_object__name(const struct bpf_object *obj)
|
||||
{
|
||||
return obj ? obj->path : ERR_PTR(-EINVAL);
|
||||
}
|
||||
|
||||
unsigned int bpf_object__kversion(struct bpf_object *obj)
|
||||
unsigned int bpf_object__kversion(const struct bpf_object *obj)
|
||||
{
|
||||
return obj ? obj->kern_version : 0;
|
||||
}
|
||||
|
||||
struct btf *bpf_object__btf(struct bpf_object *obj)
|
||||
struct btf *bpf_object__btf(const struct bpf_object *obj)
|
||||
{
|
||||
return obj ? obj->btf : NULL;
|
||||
}
|
||||
|
@ -3327,13 +3328,14 @@ int bpf_object__set_priv(struct bpf_object *obj, void *priv,
|
|||
return 0;
|
||||
}
|
||||
|
||||
void *bpf_object__priv(struct bpf_object *obj)
|
||||
void *bpf_object__priv(const struct bpf_object *obj)
|
||||
{
|
||||
return obj ? obj->priv : ERR_PTR(-EINVAL);
|
||||
}
|
||||
|
||||
static struct bpf_program *
|
||||
__bpf_program__iter(struct bpf_program *p, struct bpf_object *obj, bool forward)
|
||||
__bpf_program__iter(const struct bpf_program *p, const struct bpf_object *obj,
|
||||
bool forward)
|
||||
{
|
||||
size_t nr_programs = obj->nr_programs;
|
||||
ssize_t idx;
|
||||
|
@ -3358,7 +3360,7 @@ __bpf_program__iter(struct bpf_program *p, struct bpf_object *obj, bool forward)
|
|||
}
|
||||
|
||||
struct bpf_program *
|
||||
bpf_program__next(struct bpf_program *prev, struct bpf_object *obj)
|
||||
bpf_program__next(struct bpf_program *prev, const struct bpf_object *obj)
|
||||
{
|
||||
struct bpf_program *prog = prev;
|
||||
|
||||
|
@ -3370,7 +3372,7 @@ bpf_program__next(struct bpf_program *prev, struct bpf_object *obj)
|
|||
}
|
||||
|
||||
struct bpf_program *
|
||||
bpf_program__prev(struct bpf_program *next, struct bpf_object *obj)
|
||||
bpf_program__prev(struct bpf_program *next, const struct bpf_object *obj)
|
||||
{
|
||||
struct bpf_program *prog = next;
|
||||
|
||||
|
@ -3392,7 +3394,7 @@ int bpf_program__set_priv(struct bpf_program *prog, void *priv,
|
|||
return 0;
|
||||
}
|
||||
|
||||
void *bpf_program__priv(struct bpf_program *prog)
|
||||
void *bpf_program__priv(const struct bpf_program *prog)
|
||||
{
|
||||
return prog ? prog->priv : ERR_PTR(-EINVAL);
|
||||
}
|
||||
|
@ -3402,7 +3404,7 @@ void bpf_program__set_ifindex(struct bpf_program *prog, __u32 ifindex)
|
|||
prog->prog_ifindex = ifindex;
|
||||
}
|
||||
|
||||
const char *bpf_program__title(struct bpf_program *prog, bool needs_copy)
|
||||
const char *bpf_program__title(const struct bpf_program *prog, bool needs_copy)
|
||||
{
|
||||
const char *title;
|
||||
|
||||
|
@ -3418,7 +3420,7 @@ const char *bpf_program__title(struct bpf_program *prog, bool needs_copy)
|
|||
return title;
|
||||
}
|
||||
|
||||
int bpf_program__fd(struct bpf_program *prog)
|
||||
int bpf_program__fd(const struct bpf_program *prog)
|
||||
{
|
||||
return bpf_program__nth_fd(prog, 0);
|
||||
}
|
||||
|
@ -3451,7 +3453,7 @@ int bpf_program__set_prep(struct bpf_program *prog, int nr_instances,
|
|||
return 0;
|
||||
}
|
||||
|
||||
int bpf_program__nth_fd(struct bpf_program *prog, int n)
|
||||
int bpf_program__nth_fd(const struct bpf_program *prog, int n)
|
||||
{
|
||||
int fd;
|
||||
|
||||
|
@ -3479,25 +3481,25 @@ void bpf_program__set_type(struct bpf_program *prog, enum bpf_prog_type type)
|
|||
prog->type = type;
|
||||
}
|
||||
|
||||
static bool bpf_program__is_type(struct bpf_program *prog,
|
||||
static bool bpf_program__is_type(const struct bpf_program *prog,
|
||||
enum bpf_prog_type type)
|
||||
{
|
||||
return prog ? (prog->type == type) : false;
|
||||
}
|
||||
|
||||
#define BPF_PROG_TYPE_FNS(NAME, TYPE) \
|
||||
int bpf_program__set_##NAME(struct bpf_program *prog) \
|
||||
{ \
|
||||
if (!prog) \
|
||||
return -EINVAL; \
|
||||
bpf_program__set_type(prog, TYPE); \
|
||||
return 0; \
|
||||
} \
|
||||
\
|
||||
bool bpf_program__is_##NAME(struct bpf_program *prog) \
|
||||
{ \
|
||||
return bpf_program__is_type(prog, TYPE); \
|
||||
} \
|
||||
#define BPF_PROG_TYPE_FNS(NAME, TYPE) \
|
||||
int bpf_program__set_##NAME(struct bpf_program *prog) \
|
||||
{ \
|
||||
if (!prog) \
|
||||
return -EINVAL; \
|
||||
bpf_program__set_type(prog, TYPE); \
|
||||
return 0; \
|
||||
} \
|
||||
\
|
||||
bool bpf_program__is_##NAME(const struct bpf_program *prog) \
|
||||
{ \
|
||||
return bpf_program__is_type(prog, TYPE); \
|
||||
} \
|
||||
|
||||
BPF_PROG_TYPE_FNS(socket_filter, BPF_PROG_TYPE_SOCKET_FILTER);
|
||||
BPF_PROG_TYPE_FNS(kprobe, BPF_PROG_TYPE_KPROBE);
|
||||
|
@ -3692,17 +3694,17 @@ bpf_program__identify_section(struct bpf_program *prog,
|
|||
expected_attach_type);
|
||||
}
|
||||
|
||||
int bpf_map__fd(struct bpf_map *map)
|
||||
int bpf_map__fd(const struct bpf_map *map)
|
||||
{
|
||||
return map ? map->fd : -EINVAL;
|
||||
}
|
||||
|
||||
const struct bpf_map_def *bpf_map__def(struct bpf_map *map)
|
||||
const struct bpf_map_def *bpf_map__def(const struct bpf_map *map)
|
||||
{
|
||||
return map ? &map->def : ERR_PTR(-EINVAL);
|
||||
}
|
||||
|
||||
const char *bpf_map__name(struct bpf_map *map)
|
||||
const char *bpf_map__name(const struct bpf_map *map)
|
||||
{
|
||||
return map ? map->name : NULL;
|
||||
}
|
||||
|
@ -3733,17 +3735,17 @@ int bpf_map__set_priv(struct bpf_map *map, void *priv,
|
|||
return 0;
|
||||
}
|
||||
|
||||
void *bpf_map__priv(struct bpf_map *map)
|
||||
void *bpf_map__priv(const struct bpf_map *map)
|
||||
{
|
||||
return map ? map->priv : ERR_PTR(-EINVAL);
|
||||
}
|
||||
|
||||
bool bpf_map__is_offload_neutral(struct bpf_map *map)
|
||||
bool bpf_map__is_offload_neutral(const struct bpf_map *map)
|
||||
{
|
||||
return map->def.type == BPF_MAP_TYPE_PERF_EVENT_ARRAY;
|
||||
}
|
||||
|
||||
bool bpf_map__is_internal(struct bpf_map *map)
|
||||
bool bpf_map__is_internal(const struct bpf_map *map)
|
||||
{
|
||||
return map->libbpf_type != LIBBPF_MAP_UNSPEC;
|
||||
}
|
||||
|
@ -3768,7 +3770,7 @@ int bpf_map__set_inner_map_fd(struct bpf_map *map, int fd)
|
|||
}
|
||||
|
||||
static struct bpf_map *
|
||||
__bpf_map__iter(struct bpf_map *m, struct bpf_object *obj, int i)
|
||||
__bpf_map__iter(const struct bpf_map *m, const struct bpf_object *obj, int i)
|
||||
{
|
||||
ssize_t idx;
|
||||
struct bpf_map *s, *e;
|
||||
|
@ -3792,7 +3794,7 @@ __bpf_map__iter(struct bpf_map *m, struct bpf_object *obj, int i)
|
|||
}
|
||||
|
||||
struct bpf_map *
|
||||
bpf_map__next(struct bpf_map *prev, struct bpf_object *obj)
|
||||
bpf_map__next(const struct bpf_map *prev, const struct bpf_object *obj)
|
||||
{
|
||||
if (prev == NULL)
|
||||
return obj->maps;
|
||||
|
@ -3801,7 +3803,7 @@ bpf_map__next(struct bpf_map *prev, struct bpf_object *obj)
|
|||
}
|
||||
|
||||
struct bpf_map *
|
||||
bpf_map__prev(struct bpf_map *next, struct bpf_object *obj)
|
||||
bpf_map__prev(const struct bpf_map *next, const struct bpf_object *obj)
|
||||
{
|
||||
if (next == NULL) {
|
||||
if (!obj->nr_maps)
|
||||
|
@ -3813,7 +3815,7 @@ bpf_map__prev(struct bpf_map *next, struct bpf_object *obj)
|
|||
}
|
||||
|
||||
struct bpf_map *
|
||||
bpf_object__find_map_by_name(struct bpf_object *obj, const char *name)
|
||||
bpf_object__find_map_by_name(const struct bpf_object *obj, const char *name)
|
||||
{
|
||||
struct bpf_map *pos;
|
||||
|
||||
|
@ -3825,7 +3827,7 @@ bpf_object__find_map_by_name(struct bpf_object *obj, const char *name)
|
|||
}
|
||||
|
||||
int
|
||||
bpf_object__find_map_fd_by_name(struct bpf_object *obj, const char *name)
|
||||
bpf_object__find_map_fd_by_name(const struct bpf_object *obj, const char *name)
|
||||
{
|
||||
return bpf_map__fd(bpf_object__find_map_by_name(obj, name));
|
||||
}
|
||||
|
|
|
@ -98,15 +98,16 @@ struct bpf_object_load_attr {
|
|||
LIBBPF_API int bpf_object__load(struct bpf_object *obj);
|
||||
LIBBPF_API int bpf_object__load_xattr(struct bpf_object_load_attr *attr);
|
||||
LIBBPF_API int bpf_object__unload(struct bpf_object *obj);
|
||||
LIBBPF_API const char *bpf_object__name(struct bpf_object *obj);
|
||||
LIBBPF_API unsigned int bpf_object__kversion(struct bpf_object *obj);
|
||||
LIBBPF_API const char *bpf_object__name(const struct bpf_object *obj);
|
||||
LIBBPF_API unsigned int bpf_object__kversion(const struct bpf_object *obj);
|
||||
|
||||
struct btf;
|
||||
LIBBPF_API struct btf *bpf_object__btf(struct bpf_object *obj);
|
||||
LIBBPF_API struct btf *bpf_object__btf(const struct bpf_object *obj);
|
||||
LIBBPF_API int bpf_object__btf_fd(const struct bpf_object *obj);
|
||||
|
||||
LIBBPF_API struct bpf_program *
|
||||
bpf_object__find_program_by_title(struct bpf_object *obj, const char *title);
|
||||
bpf_object__find_program_by_title(const struct bpf_object *obj,
|
||||
const char *title);
|
||||
|
||||
LIBBPF_API struct bpf_object *bpf_object__next(struct bpf_object *prev);
|
||||
#define bpf_object__for_each_safe(pos, tmp) \
|
||||
|
@ -118,7 +119,7 @@ LIBBPF_API struct bpf_object *bpf_object__next(struct bpf_object *prev);
|
|||
typedef void (*bpf_object_clear_priv_t)(struct bpf_object *, void *);
|
||||
LIBBPF_API int bpf_object__set_priv(struct bpf_object *obj, void *priv,
|
||||
bpf_object_clear_priv_t clear_priv);
|
||||
LIBBPF_API void *bpf_object__priv(struct bpf_object *prog);
|
||||
LIBBPF_API void *bpf_object__priv(const struct bpf_object *prog);
|
||||
|
||||
LIBBPF_API int
|
||||
libbpf_prog_type_by_name(const char *name, enum bpf_prog_type *prog_type,
|
||||
|
@ -129,7 +130,7 @@ LIBBPF_API int libbpf_attach_type_by_name(const char *name,
|
|||
/* Accessors of bpf_program */
|
||||
struct bpf_program;
|
||||
LIBBPF_API struct bpf_program *bpf_program__next(struct bpf_program *prog,
|
||||
struct bpf_object *obj);
|
||||
const struct bpf_object *obj);
|
||||
|
||||
#define bpf_object__for_each_program(pos, obj) \
|
||||
for ((pos) = bpf_program__next(NULL, (obj)); \
|
||||
|
@ -137,24 +138,23 @@ LIBBPF_API struct bpf_program *bpf_program__next(struct bpf_program *prog,
|
|||
(pos) = bpf_program__next((pos), (obj)))
|
||||
|
||||
LIBBPF_API struct bpf_program *bpf_program__prev(struct bpf_program *prog,
|
||||
struct bpf_object *obj);
|
||||
const struct bpf_object *obj);
|
||||
|
||||
typedef void (*bpf_program_clear_priv_t)(struct bpf_program *,
|
||||
void *);
|
||||
typedef void (*bpf_program_clear_priv_t)(struct bpf_program *, void *);
|
||||
|
||||
LIBBPF_API int bpf_program__set_priv(struct bpf_program *prog, void *priv,
|
||||
bpf_program_clear_priv_t clear_priv);
|
||||
|
||||
LIBBPF_API void *bpf_program__priv(struct bpf_program *prog);
|
||||
LIBBPF_API void *bpf_program__priv(const struct bpf_program *prog);
|
||||
LIBBPF_API void bpf_program__set_ifindex(struct bpf_program *prog,
|
||||
__u32 ifindex);
|
||||
|
||||
LIBBPF_API const char *bpf_program__title(struct bpf_program *prog,
|
||||
LIBBPF_API const char *bpf_program__title(const struct bpf_program *prog,
|
||||
bool needs_copy);
|
||||
|
||||
LIBBPF_API int bpf_program__load(struct bpf_program *prog, char *license,
|
||||
__u32 kern_version);
|
||||
LIBBPF_API int bpf_program__fd(struct bpf_program *prog);
|
||||
LIBBPF_API int bpf_program__fd(const struct bpf_program *prog);
|
||||
LIBBPF_API int bpf_program__pin_instance(struct bpf_program *prog,
|
||||
const char *path,
|
||||
int instance);
|
||||
|
@ -227,7 +227,7 @@ typedef int (*bpf_program_prep_t)(struct bpf_program *prog, int n,
|
|||
LIBBPF_API int bpf_program__set_prep(struct bpf_program *prog, int nr_instance,
|
||||
bpf_program_prep_t prep);
|
||||
|
||||
LIBBPF_API int bpf_program__nth_fd(struct bpf_program *prog, int n);
|
||||
LIBBPF_API int bpf_program__nth_fd(const struct bpf_program *prog, int n);
|
||||
|
||||
/*
|
||||
* Adjust type of BPF program. Default is kprobe.
|
||||
|
@ -246,14 +246,14 @@ LIBBPF_API void
|
|||
bpf_program__set_expected_attach_type(struct bpf_program *prog,
|
||||
enum bpf_attach_type type);
|
||||
|
||||
LIBBPF_API bool bpf_program__is_socket_filter(struct bpf_program *prog);
|
||||
LIBBPF_API bool bpf_program__is_tracepoint(struct bpf_program *prog);
|
||||
LIBBPF_API bool bpf_program__is_raw_tracepoint(struct bpf_program *prog);
|
||||
LIBBPF_API bool bpf_program__is_kprobe(struct bpf_program *prog);
|
||||
LIBBPF_API bool bpf_program__is_sched_cls(struct bpf_program *prog);
|
||||
LIBBPF_API bool bpf_program__is_sched_act(struct bpf_program *prog);
|
||||
LIBBPF_API bool bpf_program__is_xdp(struct bpf_program *prog);
|
||||
LIBBPF_API bool bpf_program__is_perf_event(struct bpf_program *prog);
|
||||
LIBBPF_API bool bpf_program__is_socket_filter(const struct bpf_program *prog);
|
||||
LIBBPF_API bool bpf_program__is_tracepoint(const struct bpf_program *prog);
|
||||
LIBBPF_API bool bpf_program__is_raw_tracepoint(const struct bpf_program *prog);
|
||||
LIBBPF_API bool bpf_program__is_kprobe(const struct bpf_program *prog);
|
||||
LIBBPF_API bool bpf_program__is_sched_cls(const struct bpf_program *prog);
|
||||
LIBBPF_API bool bpf_program__is_sched_act(const struct bpf_program *prog);
|
||||
LIBBPF_API bool bpf_program__is_xdp(const struct bpf_program *prog);
|
||||
LIBBPF_API bool bpf_program__is_perf_event(const struct bpf_program *prog);
|
||||
|
||||
/*
|
||||
* No need for __attribute__((packed)), all members of 'bpf_map_def'
|
||||
|
@ -275,10 +275,10 @@ struct bpf_map_def {
|
|||
*/
|
||||
struct bpf_map;
|
||||
LIBBPF_API struct bpf_map *
|
||||
bpf_object__find_map_by_name(struct bpf_object *obj, const char *name);
|
||||
bpf_object__find_map_by_name(const struct bpf_object *obj, const char *name);
|
||||
|
||||
LIBBPF_API int
|
||||
bpf_object__find_map_fd_by_name(struct bpf_object *obj, const char *name);
|
||||
bpf_object__find_map_fd_by_name(const struct bpf_object *obj, const char *name);
|
||||
|
||||
/*
|
||||
* Get bpf_map through the offset of corresponding struct bpf_map_def
|
||||
|
@ -288,7 +288,7 @@ LIBBPF_API struct bpf_map *
|
|||
bpf_object__find_map_by_offset(struct bpf_object *obj, size_t offset);
|
||||
|
||||
LIBBPF_API struct bpf_map *
|
||||
bpf_map__next(struct bpf_map *map, struct bpf_object *obj);
|
||||
bpf_map__next(const struct bpf_map *map, const struct bpf_object *obj);
|
||||
#define bpf_object__for_each_map(pos, obj) \
|
||||
for ((pos) = bpf_map__next(NULL, (obj)); \
|
||||
(pos) != NULL; \
|
||||
|
@ -296,22 +296,22 @@ bpf_map__next(struct bpf_map *map, struct bpf_object *obj);
|
|||
#define bpf_map__for_each bpf_object__for_each_map
|
||||
|
||||
LIBBPF_API struct bpf_map *
|
||||
bpf_map__prev(struct bpf_map *map, struct bpf_object *obj);
|
||||
bpf_map__prev(const struct bpf_map *map, const struct bpf_object *obj);
|
||||
|
||||
LIBBPF_API int bpf_map__fd(struct bpf_map *map);
|
||||
LIBBPF_API const struct bpf_map_def *bpf_map__def(struct bpf_map *map);
|
||||
LIBBPF_API const char *bpf_map__name(struct bpf_map *map);
|
||||
LIBBPF_API int bpf_map__fd(const struct bpf_map *map);
|
||||
LIBBPF_API const struct bpf_map_def *bpf_map__def(const struct bpf_map *map);
|
||||
LIBBPF_API const char *bpf_map__name(const struct bpf_map *map);
|
||||
LIBBPF_API __u32 bpf_map__btf_key_type_id(const struct bpf_map *map);
|
||||
LIBBPF_API __u32 bpf_map__btf_value_type_id(const struct bpf_map *map);
|
||||
|
||||
typedef void (*bpf_map_clear_priv_t)(struct bpf_map *, void *);
|
||||
LIBBPF_API int bpf_map__set_priv(struct bpf_map *map, void *priv,
|
||||
bpf_map_clear_priv_t clear_priv);
|
||||
LIBBPF_API void *bpf_map__priv(struct bpf_map *map);
|
||||
LIBBPF_API void *bpf_map__priv(const struct bpf_map *map);
|
||||
LIBBPF_API int bpf_map__reuse_fd(struct bpf_map *map, int fd);
|
||||
LIBBPF_API int bpf_map__resize(struct bpf_map *map, __u32 max_entries);
|
||||
LIBBPF_API bool bpf_map__is_offload_neutral(struct bpf_map *map);
|
||||
LIBBPF_API bool bpf_map__is_internal(struct bpf_map *map);
|
||||
LIBBPF_API bool bpf_map__is_offload_neutral(const struct bpf_map *map);
|
||||
LIBBPF_API bool bpf_map__is_internal(const struct bpf_map *map);
|
||||
LIBBPF_API void bpf_map__set_ifindex(struct bpf_map *map, __u32 ifindex);
|
||||
LIBBPF_API int bpf_map__pin(struct bpf_map *map, const char *path);
|
||||
LIBBPF_API int bpf_map__unpin(struct bpf_map *map, const char *path);
|
||||
|
|
Loading…
Reference in a new issue