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 run(void * ctx)14static 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