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