xref: /linux/tools/testing/selftests/sched_ext/maybe_null.c (revision 0c436dfe5c25d0931b164b944165259f95e5281f)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * Copyright (c) 2024 Meta Platforms, Inc. and affiliates.
4  */
5 #include <bpf/bpf.h>
6 #include <scx/common.h>
7 #include <sys/wait.h>
8 #include <unistd.h>
9 #include "maybe_null.bpf.skel.h"
10 #include "maybe_null_fail_dsp.bpf.skel.h"
11 #include "maybe_null_fail_yld.bpf.skel.h"
12 #include "scx_test.h"
13 
14 static enum scx_test_status run(void *ctx)
15 {
16 	struct maybe_null *skel;
17 	struct maybe_null_fail_dsp *fail_dsp;
18 	struct maybe_null_fail_yld *fail_yld;
19 
20 	skel = maybe_null__open_and_load();
21 	if (!skel) {
22 		SCX_ERR("Failed to open and load maybe_null skel");
23 		return SCX_TEST_FAIL;
24 	}
25 	maybe_null__destroy(skel);
26 
27 	fail_dsp = maybe_null_fail_dsp__open_and_load();
28 	if (fail_dsp) {
29 		maybe_null_fail_dsp__destroy(fail_dsp);
30 		SCX_ERR("Should failed to open and load maybe_null_fail_dsp skel");
31 		return SCX_TEST_FAIL;
32 	}
33 
34 	fail_yld = maybe_null_fail_yld__open_and_load();
35 	if (fail_yld) {
36 		maybe_null_fail_yld__destroy(fail_yld);
37 		SCX_ERR("Should failed to open and load maybe_null_fail_yld skel");
38 		return SCX_TEST_FAIL;
39 	}
40 
41 	return SCX_TEST_PASS;
42 }
43 
44 struct scx_test maybe_null = {
45 	.name = "maybe_null",
46 	.description = "Verify if PTR_MAYBE_NULL work for .dispatch",
47 	.run = run,
48 };
49 REGISTER_SCX_TEST(&maybe_null)
50