1 2 ======== 3 BPF maps 4 ======== 5 6 BPF 'maps' provide generic storage of differen 7 kernel and user space. There are several stora 8 hash, array, bloom filter and radix-tree. Seve 9 support specific BPF helpers that perform acti 10 maps are accessed from BPF programs via BPF he 11 `man-pages`_ for `bpf-helpers(7)`_. 12 13 BPF maps are accessed from user space via the 14 commands to create maps, lookup elements, upda 15 More details of the BPF syscall are available 16 `man-pages`_ for `bpf(2)`_. 17 18 Map Types 19 ========= 20 21 .. toctree:: 22 :maxdepth: 1 23 :glob: 24 25 map_* 26 27 Usage Notes 28 =========== 29 30 .. c:function:: 31 int bpf(int command, union bpf_attr *attr, 32 33 Use the ``bpf()`` system call to perform the o 34 ``command``. The operation takes parameters pr 35 argument is the size of the ``union bpf_attr`` 36 37 **BPF_MAP_CREATE** 38 39 Create a map with the desired type and attribu 40 41 .. code-block:: c 42 43 int fd; 44 union bpf_attr attr = { 45 .map_type = BPF_MAP_TYPE_ARRAY; / 46 .key_size = sizeof(__u32); / 47 .value_size = sizeof(__u32); / 48 .max_entries = 256; / 49 .map_flags = BPF_F_MMAPABLE; 50 .map_name = "example_array"; 51 }; 52 53 fd = bpf(BPF_MAP_CREATE, &attr, sizeof(att 54 55 Returns a process-local file descriptor on suc 56 failure. The map can be deleted by calling ``c 57 file descriptors will be deleted automatically 58 59 .. note:: Valid characters for ``map_name`` ar 60 ``'_'`` and ``'.'``. 61 62 **BPF_MAP_LOOKUP_ELEM** 63 64 Lookup key in a given map using ``attr->map_fd 65 ``attr->value``. Returns zero and stores found 66 success, or negative error on failure. 67 68 **BPF_MAP_UPDATE_ELEM** 69 70 Create or update key/value pair in a given map 71 ``attr->value``. Returns zero on success or ne 72 73 **BPF_MAP_DELETE_ELEM** 74 75 Find and delete element by key in a given map 76 ``attr->key``. Returns zero on success or nega 77 78 .. Links: 79 .. _man-pages: https://www.kernel.org/doc/man- 80 .. _bpf(2): https://man7.org/linux/man-pages/m 81 .. _bpf-helpers(7): https://man7.org/linux/man 82 .. _ebpf-syscall: https://docs.kernel.org/user
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.