diff options
Diffstat (limited to 'tools/testing/selftests/bpf/test_btf_haskv.c')
| -rw-r--r-- | tools/testing/selftests/bpf/test_btf_haskv.c | 48 | 
1 files changed, 48 insertions, 0 deletions
diff --git a/tools/testing/selftests/bpf/test_btf_haskv.c b/tools/testing/selftests/bpf/test_btf_haskv.c new file mode 100644 index 000000000000..8c7ca096ecf2 --- /dev/null +++ b/tools/testing/selftests/bpf/test_btf_haskv.c @@ -0,0 +1,48 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* Copyright (c) 2018 Facebook */ +#include <linux/bpf.h> +#include "bpf_helpers.h" + +int _version SEC("version") = 1; + +struct ipv_counts { +	unsigned int v4; +	unsigned int v6; +}; + +typedef int btf_map_key; +typedef struct ipv_counts btf_map_value; +btf_map_key dumm_key; +btf_map_value dummy_value; + +struct bpf_map_def SEC("maps") btf_map = { +	.type = BPF_MAP_TYPE_ARRAY, +	.key_size = sizeof(int), +	.value_size = sizeof(struct ipv_counts), +	.max_entries = 4, +}; + +struct dummy_tracepoint_args { +	unsigned long long pad; +	struct sock *sock; +}; + +SEC("dummy_tracepoint") +int _dummy_tracepoint(struct dummy_tracepoint_args *arg) +{ +	struct ipv_counts *counts; +	int key = 0; + +	if (!arg->sock) +		return 0; + +	counts = bpf_map_lookup_elem(&btf_map, &key); +	if (!counts) +		return 0; + +	counts->v6++; + +	return 0; +} + +char _license[] SEC("license") = "GPL";  | 
