xref: /linux/tools/testing/selftests/bpf/progs/bpf_iter_map_elem.c (revision d9104cec3e8fe4b458b74709853231385779001f)
1*f8b19aecSSlava Imameev // SPDX-License-Identifier: GPL-2.0-only
2*f8b19aecSSlava Imameev 
3*f8b19aecSSlava Imameev #include "vmlinux.h"
4*f8b19aecSSlava Imameev #include <bpf/bpf_tracing.h>
5*f8b19aecSSlava Imameev #include <bpf/bpf_helpers.h>
6*f8b19aecSSlava Imameev 
7*f8b19aecSSlava Imameev char _license[] SEC("license") = "GPL";
8*f8b19aecSSlava Imameev 
9*f8b19aecSSlava Imameev __u32 value_sum = 0;
10*f8b19aecSSlava Imameev 
11*f8b19aecSSlava Imameev SEC("iter/bpf_map_elem")
dump_bpf_map_values(struct bpf_iter__bpf_map_elem * ctx)12*f8b19aecSSlava Imameev int dump_bpf_map_values(struct bpf_iter__bpf_map_elem *ctx)
13*f8b19aecSSlava Imameev {
14*f8b19aecSSlava Imameev 	__u32 value = 0;
15*f8b19aecSSlava Imameev 
16*f8b19aecSSlava Imameev 	if (ctx->value == (void *)0)
17*f8b19aecSSlava Imameev 		return 0;
18*f8b19aecSSlava Imameev 
19*f8b19aecSSlava Imameev 	bpf_probe_read_kernel(&value, sizeof(value), ctx->value);
20*f8b19aecSSlava Imameev 	value_sum += value;
21*f8b19aecSSlava Imameev 	return 0;
22*f8b19aecSSlava Imameev }
23