1*cbf9f849SMartin KaFai Lau // SPDX-License-Identifier: GPL-2.0 2*cbf9f849SMartin KaFai Lau /* Copyright (c) 2024 Meta Platforms, Inc. and affiliates. */ 3*cbf9f849SMartin KaFai Lau 4*cbf9f849SMartin KaFai Lau #include <vmlinux.h> 5*cbf9f849SMartin KaFai Lau #include <bpf/bpf_helpers.h> 6*cbf9f849SMartin KaFai Lau #include "uptr_test_common.h" 7*cbf9f849SMartin KaFai Lau 8*cbf9f849SMartin KaFai Lau struct { 9*cbf9f849SMartin KaFai Lau __uint(type, BPF_MAP_TYPE_TASK_STORAGE); 10*cbf9f849SMartin KaFai Lau __uint(map_flags, BPF_F_NO_PREALLOC); 11*cbf9f849SMartin KaFai Lau __type(key, int); 12*cbf9f849SMartin KaFai Lau __type(value, struct value_lock_type); 13*cbf9f849SMartin KaFai Lau } datamap SEC(".maps"); 14*cbf9f849SMartin KaFai Lau 15*cbf9f849SMartin KaFai Lau /* load test only. not used */ 16*cbf9f849SMartin KaFai Lau SEC("syscall") 17*cbf9f849SMartin KaFai Lau int not_used(void *ctx) 18*cbf9f849SMartin KaFai Lau { 19*cbf9f849SMartin KaFai Lau struct value_lock_type *ptr; 20*cbf9f849SMartin KaFai Lau struct task_struct *task; 21*cbf9f849SMartin KaFai Lau struct user_data *udata; 22*cbf9f849SMartin KaFai Lau 23*cbf9f849SMartin KaFai Lau task = bpf_get_current_task_btf(); 24*cbf9f849SMartin KaFai Lau ptr = bpf_task_storage_get(&datamap, task, 0, 0); 25*cbf9f849SMartin KaFai Lau if (!ptr) 26*cbf9f849SMartin KaFai Lau return 0; 27*cbf9f849SMartin KaFai Lau 28*cbf9f849SMartin KaFai Lau bpf_spin_lock(&ptr->lock); 29*cbf9f849SMartin KaFai Lau 30*cbf9f849SMartin KaFai Lau udata = ptr->udata; 31*cbf9f849SMartin KaFai Lau if (!udata) { 32*cbf9f849SMartin KaFai Lau bpf_spin_unlock(&ptr->lock); 33*cbf9f849SMartin KaFai Lau return 0; 34*cbf9f849SMartin KaFai Lau } 35*cbf9f849SMartin KaFai Lau udata->result = MAGIC_VALUE + udata->a + udata->b; 36*cbf9f849SMartin KaFai Lau 37*cbf9f849SMartin KaFai Lau bpf_spin_unlock(&ptr->lock); 38*cbf9f849SMartin KaFai Lau 39*cbf9f849SMartin KaFai Lau return 0; 40*cbf9f849SMartin KaFai Lau } 41*cbf9f849SMartin KaFai Lau 42*cbf9f849SMartin KaFai Lau char _license[] SEC("license") = "GPL"; 43