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 | |