mirror of
https://github.com/torvalds/linux.git
synced 2024-11-23 12:42:02 +00:00
bc84e959e5
Move the general maps documentation into the maps.rst file from the overall networking filter documentation and add a link instead. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Acked-by: Song Liu <songliubraving@fb.com> Link: https://lore.kernel.org/bpf/20211119163215.971383-5-hch@lst.de
52 lines
1.4 KiB
ReStructuredText
52 lines
1.4 KiB
ReStructuredText
|
|
=========
|
|
eBPF maps
|
|
=========
|
|
|
|
'maps' is a generic storage of different types for sharing data between kernel
|
|
and userspace.
|
|
|
|
The maps are accessed from user space via BPF syscall, which has commands:
|
|
|
|
- create a map with given type and attributes
|
|
``map_fd = bpf(BPF_MAP_CREATE, union bpf_attr *attr, u32 size)``
|
|
using attr->map_type, attr->key_size, attr->value_size, attr->max_entries
|
|
returns process-local file descriptor or negative error
|
|
|
|
- lookup key in a given map
|
|
``err = bpf(BPF_MAP_LOOKUP_ELEM, union bpf_attr *attr, u32 size)``
|
|
using attr->map_fd, attr->key, attr->value
|
|
returns zero and stores found elem into value or negative error
|
|
|
|
- create or update key/value pair in a given map
|
|
``err = bpf(BPF_MAP_UPDATE_ELEM, union bpf_attr *attr, u32 size)``
|
|
using attr->map_fd, attr->key, attr->value
|
|
returns zero or negative error
|
|
|
|
- find and delete element by key in a given map
|
|
``err = bpf(BPF_MAP_DELETE_ELEM, union bpf_attr *attr, u32 size)``
|
|
using attr->map_fd, attr->key
|
|
|
|
- to delete map: close(fd)
|
|
Exiting process will delete maps automatically
|
|
|
|
userspace programs use this syscall to create/access maps that eBPF programs
|
|
are concurrently updating.
|
|
|
|
maps can have different types: hash, array, bloom filter, radix-tree, etc.
|
|
|
|
The map is defined by:
|
|
|
|
- type
|
|
- max number of elements
|
|
- key size in bytes
|
|
- value size in bytes
|
|
|
|
Map Types
|
|
=========
|
|
|
|
.. toctree::
|
|
:maxdepth: 1
|
|
:glob:
|
|
|
|
map_* |