diff options
author | Christoph Hellwig <hch@lst.de> | 2021-11-19 19:32:14 +0300 |
---|---|---|
committer | Alexei Starovoitov <ast@kernel.org> | 2021-11-30 21:52:11 +0300 |
commit | bc84e959e5aed4a79597d03e810fd1d7067b4ff7 (patch) | |
tree | 44bc4d7aa7f94dcf47a199030c723337250ab5c7 /Documentation/bpf/maps.rst | |
parent | 06edc59c1fd7aababc8361655b20f4cc9870aef2 (diff) | |
download | linux-bc84e959e5aed4a79597d03e810fd1d7067b4ff7.tar.xz |
bpf, docs: Move handling of maps to Documentation/bpf/maps.rst
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
Diffstat (limited to 'Documentation/bpf/maps.rst')
-rw-r--r-- | Documentation/bpf/maps.rst | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/Documentation/bpf/maps.rst b/Documentation/bpf/maps.rst index 2084b0e7cde8..f41619e312ac 100644 --- a/Documentation/bpf/maps.rst +++ b/Documentation/bpf/maps.rst @@ -1,4 +1,47 @@ + +========= +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 ========= |