1 // SPDX-License-Identifier: GPL-2.0 2 /* Copyright (c) 2022 Facebook */ 3 #include "vmlinux.h" 4 #include <bpf/bpf_helpers.h> 5 #include <bpf/bpf_tracing.h> 6 7 struct bpf_testmod_btf_type_tag_1 { 8 int a; 9 }; 10 11 struct bpf_testmod_btf_type_tag_2 { 12 struct bpf_testmod_btf_type_tag_1 *p; 13 }; 14 15 int g; 16 17 SEC("fentry/bpf_testmod_test_btf_type_tag_user_1") 18 int BPF_PROG(test_user1, struct bpf_testmod_btf_type_tag_1 *arg) 19 { 20 g = arg->a; 21 return 0; 22 } 23 24 SEC("fentry/bpf_testmod_test_btf_type_tag_user_2") 25 int BPF_PROG(test_user2, struct bpf_testmod_btf_type_tag_2 *arg) 26 { 27 g = arg->p->a; 28 return 0; 29 } 30 31 /* int __sys_getsockname(int fd, struct sockaddr __user *usockaddr, 32 * int __user *usockaddr_len); 33 */ 34 SEC("fentry/__sys_getsockname") 35 int BPF_PROG(test_sys_getsockname, int fd, struct sockaddr *usockaddr, 36 int *usockaddr_len) 37 { 38 g = usockaddr->sa_family; 39 return 0; 40 } 41