summaryrefslogtreecommitdiffstats
path: root/include/uapi/linux/bpf.h
diff options
context:
space:
mode:
authorAlexei Starovoitov2014-11-14 02:36:45 +0100
committerDavid S. Miller2014-11-18 19:43:25 +0100
commit0f8e4bd8a1fc8c4185f1630061d0a1f2d197a475 (patch)
tree8f78f12dad4d5188019cba0456186ecced42c073 /include/uapi/linux/bpf.h
parentbpf: add 'flags' attribute to BPF_MAP_UPDATE_ELEM command (diff)
downloadkernel-qcow2-linux-0f8e4bd8a1fc8c4185f1630061d0a1f2d197a475.tar.gz
kernel-qcow2-linux-0f8e4bd8a1fc8c4185f1630061d0a1f2d197a475.tar.xz
kernel-qcow2-linux-0f8e4bd8a1fc8c4185f1630061d0a1f2d197a475.zip
bpf: add hashtable type of eBPF maps
add new map type BPF_MAP_TYPE_HASH and its implementation - maps are created/destroyed by userspace. Both userspace and eBPF programs can lookup/update/delete elements from the map - eBPF programs can be called in_irq(), so use spin_lock_irqsave() mechanism for concurrent updates - key/value are opaque range of bytes (aligned to 8 bytes) - user space provides 3 configuration attributes via BPF syscall: key_size, value_size, max_entries - map takes care of allocating/freeing key/value pairs - map_update_elem() must fail to insert new element when max_entries limit is reached to make sure that eBPF programs cannot exhaust memory - map_update_elem() replaces elements in an atomic way - optimized for speed of lookup() which can be called multiple times from eBPF program which itself is triggered by high volume of events . in the future JIT compiler may recognize lookup() call and optimize it further, since key_size is constant for life of eBPF program Signed-off-by: Alexei Starovoitov <ast@plumgrid.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/uapi/linux/bpf.h')
-rw-r--r--include/uapi/linux/bpf.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h
index 3e9e1b77f29d..03a01fd609aa 100644
--- a/include/uapi/linux/bpf.h
+++ b/include/uapi/linux/bpf.h
@@ -111,6 +111,7 @@ enum bpf_cmd {
enum bpf_map_type {
BPF_MAP_TYPE_UNSPEC,
+ BPF_MAP_TYPE_HASH,
};
enum bpf_prog_type {