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
27 lines
547 B
C
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";
|