1a6541f4dSDavid Vernet // SPDX-License-Identifier: GPL-2.0
2a6541f4dSDavid Vernet /* Copyright (c) 2023 Meta Platforms, Inc. and affiliates. */
3a6541f4dSDavid Vernet 
4a6541f4dSDavid Vernet #include <vmlinux.h>
5a6541f4dSDavid Vernet #include <bpf/bpf_tracing.h>
6a6541f4dSDavid Vernet #include <bpf/bpf_helpers.h>
7a6541f4dSDavid Vernet #include "bpf_misc.h"
8a6541f4dSDavid Vernet 
9a6541f4dSDavid Vernet #include "nested_trust_common.h"
10a6541f4dSDavid Vernet 
11a6541f4dSDavid Vernet char _license[] SEC("license") = "GPL";
12a6541f4dSDavid Vernet 
13*d2284d68SYafang Shao struct {
14*d2284d68SYafang Shao 	__uint(type, BPF_MAP_TYPE_SK_STORAGE);
15*d2284d68SYafang Shao 	__uint(map_flags, BPF_F_NO_PREALLOC);
16*d2284d68SYafang Shao 	__type(key, int);
17*d2284d68SYafang Shao 	__type(value, u64);
18*d2284d68SYafang Shao } sk_storage_map SEC(".maps");
19*d2284d68SYafang Shao 
20a6541f4dSDavid Vernet SEC("tp_btf/task_newtask")
21a6541f4dSDavid Vernet __success
BPF_PROG(test_read_cpumask,struct task_struct * task,u64 clone_flags)22a6541f4dSDavid Vernet int BPF_PROG(test_read_cpumask, struct task_struct *task, u64 clone_flags)
23a6541f4dSDavid Vernet {
24a6541f4dSDavid Vernet 	bpf_cpumask_test_cpu(0, task->cpus_ptr);
25a6541f4dSDavid Vernet 	return 0;
26a6541f4dSDavid Vernet }
27*d2284d68SYafang Shao 
28*d2284d68SYafang Shao SEC("tp_btf/tcp_probe")
29*d2284d68SYafang Shao __success
BPF_PROG(test_skb_field,struct sock * sk,struct sk_buff * skb)30*d2284d68SYafang Shao int BPF_PROG(test_skb_field, struct sock *sk, struct sk_buff *skb)
31*d2284d68SYafang Shao {
32*d2284d68SYafang Shao 	bpf_sk_storage_get(&sk_storage_map, skb->sk, 0, 0);
33*d2284d68SYafang Shao 	return 0;
34*d2284d68SYafang Shao }
35