xref: /linux/tools/testing/selftests/sched_ext/prog_run.bpf.c (revision daa9f66fe194f672d2c94d879b6dad7035e03ebe)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * A scheduler that validates that we can invoke sched_ext kfuncs in
4  * BPF_PROG_TYPE_SYSCALL programs.
5  *
6  * Copyright (c) 2024 Meta Platforms, Inc. and affiliates.
7  * Copyright (c) 2024 David Vernet <dvernet@meta.com>
8  */
9 
10 #include <scx/common.bpf.h>
11 
12 UEI_DEFINE(uei);
13 
14 char _license[] SEC("license") = "GPL";
15 
16 SEC("syscall")
BPF_PROG(prog_run_syscall)17 int BPF_PROG(prog_run_syscall)
18 {
19 	scx_bpf_create_dsq(0, -1);
20 	scx_bpf_exit(0xdeadbeef, "Exited from PROG_RUN");
21 	return 0;
22 }
23 
BPF_STRUCT_OPS(prog_run_exit,struct scx_exit_info * ei)24 void BPF_STRUCT_OPS(prog_run_exit, struct scx_exit_info *ei)
25 {
26 	UEI_RECORD(uei, ei);
27 }
28 
29 SEC(".struct_ops.link")
30 struct sched_ext_ops prog_run_ops = {
31 	.exit			= (void *) prog_run_exit,
32 	.name			= "prog_run",
33 };
34