title | description |
---|---|
Helper Function 'bpf_map_lookup_elem' |
This page documents the 'bpf_map_lookup_elem' eBPF helper function, including its defintion, usage, program types that can use it, and examples. |
The lookup map element helper call is used to read values from maps.
Copyright (c) 2015 The Libbpf Authors. All rights reserved.
Perform a lookup in map for an entry associated to key.
Map value associated to key, or NULL if no entry was found.
#!c static void *(* const bpf_map_lookup_elem)(void *map, const void *key) = (void *) 1;
The map
argument must be a pointer to a map definition and key
must be a pointer to the key you
wish to lookup.
The return value will be a pointer to the map value or NULL
. The value is a direct reference to the kernel memory where this map value is stored, not a copy. Therefor any modifications made to the value are automatically persisted without the need to call any additional helpers.
!!! warning modifying map values of non per-CPU maps is subject to race conditions, atomics or spinlocks must be utilized to prevent race conditions if they are detrimental to your use case.
This helper call can be used in the following program types:
- BPF_PROG_TYPE_CGROUP_DEVICE
- BPF_PROG_TYPE_CGROUP_SKB
- BPF_PROG_TYPE_CGROUP_SOCK
- BPF_PROG_TYPE_CGROUP_SOCKOPT
- BPF_PROG_TYPE_CGROUP_SOCK_ADDR
- BPF_PROG_TYPE_CGROUP_SYSCTL
- BPF_PROG_TYPE_FLOW_DISSECTOR
- BPF_PROG_TYPE_KPROBE
- BPF_PROG_TYPE_LIRC_MODE2
- BPF_PROG_TYPE_LSM
- BPF_PROG_TYPE_LWT_IN
- BPF_PROG_TYPE_LWT_OUT
- BPF_PROG_TYPE_LWT_SEG6LOCAL
- BPF_PROG_TYPE_LWT_XMIT
- BPF_PROG_TYPE_PERF_EVENT
- BPF_PROG_TYPE_RAW_TRACEPOINT
- BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE
- BPF_PROG_TYPE_SCHED_ACT
- BPF_PROG_TYPE_SCHED_CLS
- BPF_PROG_TYPE_SK_LOOKUP
- BPF_PROG_TYPE_SK_MSG
- BPF_PROG_TYPE_SK_REUSEPORT
- BPF_PROG_TYPE_SK_SKB
- BPF_PROG_TYPE_SOCKET_FILTER
- BPF_PROG_TYPE_SOCK_OPS
- BPF_PROG_TYPE_STRUCT_OPS
- BPF_PROG_TYPE_SYSCALL
- BPF_PROG_TYPE_TRACEPOINT
- BPF_PROG_TYPE_TRACING
- BPF_PROG_TYPE_XDP
This helper call can be used with the following map types:
- BPF_MAP_TYPE_ARRAY
- BPF_MAP_TYPE_ARRAY_OF_MAPS
- BPF_MAP_TYPE_HASH
- BPF_MAP_TYPE_HASH_OF_MAPS
- BPF_MAP_TYPE_LPM_TRIE
- BPF_MAP_TYPE_LRU_HASH
- BPF_MAP_TYPE_LRU_PERCPU_HASH
- BPF_MAP_TYPE_PERCPU_ARRAY
- BPF_MAP_TYPE_PERCPU_HASH
- BPF_MAP_TYPE_SOCKHASH
- BPF_MAP_TYPE_SOCKMAP
- BPF_MAP_TYPE_XSKMAP
int key, value;
key = 1;
value = bpf_map_lookup_elem(&my_map, &key);
if (value)
bpf_printk("Value read from the map: '%d'\n", value);
else
bpf_printk("Failed to read value from the map\n");