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 Vernetstatic 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