]> Git Repo - linux.git/blob - tools/testing/selftests/bpf/progs/test_prog_array_init.c
Linux 6.14-rc3
[linux.git] / tools / testing / selftests / bpf / progs / test_prog_array_init.c
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /* Copyright (c) 2021 Hengqi Chen */
3
4 #include "vmlinux.h"
5 #include <bpf/bpf_helpers.h>
6 #include <bpf/bpf_tracing.h>
7
8 const volatile pid_t my_pid = 0;
9 int value = 0;
10
11 SEC("raw_tp/sys_enter")
12 int tailcall_1(void *ctx)
13 {
14         value = 42;
15         return 0;
16 }
17
18 struct {
19         __uint(type, BPF_MAP_TYPE_PROG_ARRAY);
20         __uint(max_entries, 2);
21         __uint(key_size, sizeof(__u32));
22         __array(values, int (void *));
23 } prog_array_init SEC(".maps") = {
24         .values = {
25                 [1] = (void *)&tailcall_1,
26         },
27 };
28
29 SEC("raw_tp/sys_enter")
30 int entry(void *ctx)
31 {
32         pid_t pid = bpf_get_current_pid_tgid() >> 32;
33
34         if (pid != my_pid)
35                 return 0;
36
37         bpf_tail_call(ctx, &prog_array_init, 1);
38         return 0;
39 }
This page took 0.034875 seconds and 4 git commands to generate.