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