1bd4aed0eSJiong Wang /* SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) */
2bd4aed0eSJiong Wang #include <linux/bpf.h>
33e689141SToke Høiland-Jørgensen #include <bpf/bpf_helpers.h>
4bd4aed0eSJiong Wang
5*ccc3f569SAndrii Nakryiko struct {
6*ccc3f569SAndrii Nakryiko __uint(type, BPF_MAP_TYPE_HASH);
7*ccc3f569SAndrii Nakryiko __type(key, __u32);
8*ccc3f569SAndrii Nakryiko __type(value, long);
9*ccc3f569SAndrii Nakryiko __uint(max_entries, 2);
10*ccc3f569SAndrii Nakryiko } htab SEC(".maps");
11bd4aed0eSJiong Wang
12*ccc3f569SAndrii Nakryiko struct {
13*ccc3f569SAndrii Nakryiko __uint(type, BPF_MAP_TYPE_ARRAY);
14*ccc3f569SAndrii Nakryiko __type(key, __u32);
15*ccc3f569SAndrii Nakryiko __type(value, long);
16*ccc3f569SAndrii Nakryiko __uint(max_entries, 2);
17*ccc3f569SAndrii Nakryiko } array SEC(".maps");
18bd4aed0eSJiong Wang
19bd4aed0eSJiong Wang /* Sample program which should always load for testing control paths. */
func()20bd4aed0eSJiong Wang SEC(".text") int func()
21bd4aed0eSJiong Wang {
22bd4aed0eSJiong Wang __u64 key64 = 0;
23bd4aed0eSJiong Wang __u32 key = 0;
24bd4aed0eSJiong Wang long *value;
25bd4aed0eSJiong Wang
26bd4aed0eSJiong Wang value = bpf_map_lookup_elem(&htab, &key);
27bd4aed0eSJiong Wang if (!value)
28bd4aed0eSJiong Wang return 1;
29bd4aed0eSJiong Wang value = bpf_map_lookup_elem(&array, &key64);
30bd4aed0eSJiong Wang if (!value)
31bd4aed0eSJiong Wang return 1;
32bd4aed0eSJiong Wang
33bd4aed0eSJiong Wang return 0;
34bd4aed0eSJiong Wang }
35