KFunc bpf_arena_free_pages
Free pages of memory for a arena.
Definition
p__map
: Pointer to the BPF_MAP_TYPE_ARENA
map.
ptr__ign
:Address of the start of the page(s) to be freed, must be a page aligned address.
page_cnt
: Number of pages to free.
void bpf_arena_free_pages(void *p__map, void *ptr__ign, u32 page_cnt)
Note
This function may sleep, and therefore can only be used from sleepable programs.
Usage
A BPF arena is a region of memory that can be shared between BPF programs and userspace programs. This allows for the creation of custom data structures that can be shared between BPF programs and userspace programs.
An arena is created as a map, upon its creation a maximum memory size is specified, but this memory isn't allocated at creation, rather, an arena allows on demand allocation of memory pages.
The kfunc is used to free these pages.
Program types
The following program types can make use of this kfunc:
BPF_PROG_TYPE_CGROUP_SKB
BPF_PROG_TYPE_CGROUP_SOCK_ADDR
BPF_PROG_TYPE_LSM
BPF_PROG_TYPE_LWT_IN
BPF_PROG_TYPE_LWT_OUT
BPF_PROG_TYPE_LWT_SEG6LOCAL
BPF_PROG_TYPE_LWT_XMIT
BPF_PROG_TYPE_NETFILTER
BPF_PROG_TYPE_SCHED_ACT
BPF_PROG_TYPE_SCHED_CLS
BPF_PROG_TYPE_SK_SKB
BPF_PROG_TYPE_SOCKET_FILTER
BPF_PROG_TYPE_STRUCT_OPS
BPF_PROG_TYPE_SYSCALL
BPF_PROG_TYPE_TRACING
BPF_PROG_TYPE_XDP
Example
Docs could be improved
This part of the docs is incomplete, contributions are very welcome