diff options
author | Alexei Starovoitov <ast@plumgrid.com> | 2014-11-14 02:36:45 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-11-18 19:43:25 +0100 |
commit | 0f8e4bd8a1fc8c4185f1630061d0a1f2d197a475 (patch) | |
tree | 8f78f12dad4d5188019cba0456186ecced42c073 /firmware/ositech | |
parent | bpf: add 'flags' attribute to BPF_MAP_UPDATE_ELEM command (diff) | |
download | linux-0f8e4bd8a1fc8c4185f1630061d0a1f2d197a475.tar.xz 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 'firmware/ositech')
0 files changed, 0 insertions, 0 deletions