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