xref: /linux/tools/testing/selftests/bpf/progs/test_global_percpu_data.c (revision 4c9241bd731a0205cee2c4a4fa0abe866c767e2f)
1 // SPDX-License-Identifier: GPL-2.0
2 #include <vmlinux.h>
3 #include <bpf/bpf_helpers.h>
4 #include "bpf_misc.h"
5 
6 /* Used for testing map name. */
7 int loong SEC(".percpu.looooooooong");
8 int data3 SEC(".data.percpu");
9 int data2 SEC(".percpu.data");
10 
11 int run;
12 /* cpu_id as array to verify map value resizing. */
13 int cpu_id[1] SEC(".percpu");
14 int data SEC(".percpu") = -1;
15 int nums[7] SEC(".percpu");
16 bool set SEC(".percpu") = false;
17 struct {
18 	char set;
19 	int i;
20 	int nums[7];
21 } struct_data SEC(".percpu") = {
22 	.set = 0,
23 	.i = -1,
24 };
25 
26 SEC("raw_tp/task_rename")
27 __auxiliary
28 int update_percpu_data(void *ctx)
29 {
30 	struct_data.nums[6] = 0xc0de;
31 	struct_data.set = 1;
32 	struct_data.i = 1;
33 	nums[6] = 0xc0de;
34 	data = 1;
35 	run++;
36 	set = true;
37 	cpu_id[0] = bpf_get_smp_processor_id();
38 	return 0;
39 }
40 
41 char _license[] SEC("license") = "GPL";
42