Something went wrong. Try again.
(I'm so sorry!) Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091// SPDX-License-Identifier: GPL-2.0/* Copyright (c) 2024 Meta Platforms, Inc. and affiliates. */#include <vmlinux.h>#include <bpf/bpf_helpers.h>#include <bpf/bpf_tracing.h>#include "../test_kmods/bpf_testmod.h"
char _license[] SEC("license") = "GPL";
int test_1_result = 0;int test_2_result = 0;
SEC("struct_ops/test_1")int BPF_PROG(test_1){ test_1_result = 0xdeadbeef; return 0;}
SEC("struct_ops/test_2")void BPF_PROG(test_2, int a, int b){ test_2_result = a + b;}
SEC("?struct_ops/test_3")int BPF_PROG(test_3, int a, int b){ test_2_result = a + b + 3; return a + b + 3;}
SEC(".struct_ops.link")struct bpf_testmod_ops testmod_1 = { .test_1 = (void *)test_1, .test_2 = (void *)test_2, .data = 0x1,};
SEC("struct_ops/test_2")void BPF_PROG(test_2_v2, int a, int b){ test_2_result = a * b;}
struct bpf_testmod_ops___v2 { int (*test_1)(void); void (*test_2)(int a, int b); int (*test_maybe_null)(int dummy, struct task_struct *task);};
SEC(".struct_ops.link")struct bpf_testmod_ops___v2 testmod_2 = { .test_1 = (void *)test_1, .test_2 = (void *)test_2_v2,};
struct bpf_testmod_ops___zeroed { int (*test_1)(void); void (*test_2)(int a, int b); int (*test_maybe_null)(int dummy, struct task_struct *task); void (*zeroed_op)(int a, int b); int zeroed;};
SEC("struct_ops/test_3")int BPF_PROG(zeroed_op){ return 1;}
SEC(".struct_ops.link")struct bpf_testmod_ops___zeroed testmod_zeroed = { .test_1 = (void *)test_1, .test_2 = (void *)test_2_v2, .zeroed_op = (void *)zeroed_op,};
struct bpf_testmod_ops___incompatible { int (*test_1)(void); void (*test_2)(int *a); int data;};
SEC(".struct_ops.link")struct bpf_testmod_ops___incompatible testmod_incompatible = { .test_1 = (void *)test_1, .test_2 = (void *)test_2, .data = 3,};