xref: /linux/tools/testing/selftests/bpf/uptr_test_common.h (revision c771600c6af14749609b49565ffb4cac2959710d)
14579b4a4SKui-Feng Lee /* SPDX-License-Identifier: GPL-2.0 */
24579b4a4SKui-Feng Lee /* Copyright (c) 2024 Meta Platforms, Inc. and affiliates. */
34579b4a4SKui-Feng Lee 
44579b4a4SKui-Feng Lee #ifndef _UPTR_TEST_COMMON_H
54579b4a4SKui-Feng Lee #define _UPTR_TEST_COMMON_H
64579b4a4SKui-Feng Lee 
74579b4a4SKui-Feng Lee #define MAGIC_VALUE 0xabcd1234
8*bd5879a6SMartin KaFai Lau #define PAGE_SIZE 4096
94579b4a4SKui-Feng Lee 
104579b4a4SKui-Feng Lee #ifdef __BPF__
114579b4a4SKui-Feng Lee /* Avoid fwd btf type being generated for the following struct */
12*bd5879a6SMartin KaFai Lau struct large_data *dummy_large_data;
13*bd5879a6SMartin KaFai Lau struct empty_data *dummy_empty_data;
144579b4a4SKui-Feng Lee struct user_data *dummy_data;
154579b4a4SKui-Feng Lee struct cgroup *dummy_cgrp;
164579b4a4SKui-Feng Lee #else
174579b4a4SKui-Feng Lee #define __uptr
184579b4a4SKui-Feng Lee #define __kptr
194579b4a4SKui-Feng Lee #endif
204579b4a4SKui-Feng Lee 
214579b4a4SKui-Feng Lee struct user_data {
224579b4a4SKui-Feng Lee 	int a;
234579b4a4SKui-Feng Lee 	int b;
244579b4a4SKui-Feng Lee 	int result;
254579b4a4SKui-Feng Lee 	int nested_result;
264579b4a4SKui-Feng Lee };
274579b4a4SKui-Feng Lee 
284579b4a4SKui-Feng Lee struct nested_udata {
294579b4a4SKui-Feng Lee 	struct user_data __uptr *udata;
304579b4a4SKui-Feng Lee };
314579b4a4SKui-Feng Lee 
324579b4a4SKui-Feng Lee struct value_type {
334579b4a4SKui-Feng Lee 	struct user_data __uptr *udata;
344579b4a4SKui-Feng Lee 	struct cgroup __kptr *cgrp;
354579b4a4SKui-Feng Lee 	struct nested_udata nested;
364579b4a4SKui-Feng Lee };
374579b4a4SKui-Feng Lee 
38cbf9f849SMartin KaFai Lau struct value_lock_type {
39cbf9f849SMartin KaFai Lau 	struct user_data __uptr *udata;
40cbf9f849SMartin KaFai Lau 	struct bpf_spin_lock lock;
41cbf9f849SMartin KaFai Lau };
42cbf9f849SMartin KaFai Lau 
43*bd5879a6SMartin KaFai Lau struct large_data {
44*bd5879a6SMartin KaFai Lau 	__u8 one_page[PAGE_SIZE];
45*bd5879a6SMartin KaFai Lau 	int a;
46*bd5879a6SMartin KaFai Lau };
47*bd5879a6SMartin KaFai Lau 
48*bd5879a6SMartin KaFai Lau struct large_uptr {
49*bd5879a6SMartin KaFai Lau 	struct large_data __uptr *udata;
50*bd5879a6SMartin KaFai Lau };
51*bd5879a6SMartin KaFai Lau 
52*bd5879a6SMartin KaFai Lau struct empty_data {
53*bd5879a6SMartin KaFai Lau };
54*bd5879a6SMartin KaFai Lau 
55*bd5879a6SMartin KaFai Lau struct empty_uptr {
56*bd5879a6SMartin KaFai Lau 	struct empty_data __uptr *udata;
57*bd5879a6SMartin KaFai Lau };
58*bd5879a6SMartin KaFai Lau 
59*bd5879a6SMartin KaFai Lau struct kstruct_uptr {
60*bd5879a6SMartin KaFai Lau 	struct cgroup __uptr *cgrp;
61*bd5879a6SMartin KaFai Lau };
62*bd5879a6SMartin KaFai Lau 
634579b4a4SKui-Feng Lee #endif
64