linux/tools/testing/selftests/bpf/progs/test_lookup_and_delete.c
Denis Salopek 49c299b694 selftests/bpf: Add bpf_lookup_and_delete_elem tests
Add bpf selftests and extend existing ones for a new function
bpf_lookup_and_delete_elem() for (percpu) hash and (percpu) LRU hash map
types.
In test_lru_map and test_maps we add an element, lookup_and_delete it,
then check whether it's deleted.
The newly added lookup_and_delete prog tests practically do the same
thing but additionally use a BPF program to change the value of the
element for LRU maps.

Signed-off-by: Denis Salopek <denis.salopek@sartura.hr>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Acked-by: Yonghong Song <yhs@fb.com>
Link: https://lore.kernel.org/bpf/d30d3e0060c1f750e133579623cf1c60ff58f3d9.1620763117.git.denis.salopek@sartura.hr
2021-05-24 13:30:52 -07:00

27 lines
547 B
C

// SPDX-License-Identifier: GPL-2.0
#include "vmlinux.h"
#include <bpf/bpf_helpers.h>
__u32 set_pid = 0;
__u64 set_key = 0;
__u64 set_value = 0;
struct {
__uint(type, BPF_MAP_TYPE_HASH);
__uint(max_entries, 2);
__type(key, __u64);
__type(value, __u64);
} hash_map SEC(".maps");
SEC("tp/syscalls/sys_enter_getpgid")
int bpf_lookup_and_delete_test(const void *ctx)
{
if (set_pid == bpf_get_current_pid_tgid() >> 32)
bpf_map_update_elem(&hash_map, &set_key, &set_value, BPF_NOEXIST);
return 0;
}
char _license[] SEC("license") = "GPL";