1 /* SPDX-License-Identifier: GPL-2.0 */
3 * Copyright (c) 2023 Meta Platforms, Inc. and affiliates.
8 #include <scx/common.h>
11 #include "select_cpu_dfl.bpf.skel.h"
14 #define NUM_CHILDREN 1028
16 static enum scx_test_status setup(void **ctx)
18 struct select_cpu_dfl *skel;
20 skel = select_cpu_dfl__open_and_load();
21 SCX_FAIL_IF(!skel, "Failed to open and load skel");
27 static enum scx_test_status run(void *ctx)
29 struct select_cpu_dfl *skel = ctx;
30 struct bpf_link *link;
31 pid_t pids[NUM_CHILDREN];
34 link = bpf_map__attach_struct_ops(skel->maps.select_cpu_dfl_ops);
35 SCX_FAIL_IF(!link, "Failed to attach scheduler");
37 for (i = 0; i < NUM_CHILDREN; i++) {
45 for (i = 0; i < NUM_CHILDREN; i++) {
46 SCX_EQ(waitpid(pids[i], &status, 0), pids[i]);
50 SCX_ASSERT(!skel->bss->saw_local);
52 bpf_link__destroy(link);
57 static void cleanup(void *ctx)
59 struct select_cpu_dfl *skel = ctx;
61 select_cpu_dfl__destroy(skel);
64 struct scx_test select_cpu_dfl = {
65 .name = "select_cpu_dfl",
66 .description = "Verify the default ops.select_cpu() dispatches tasks "
67 "when idles cores are found, and skips ops.enqueue()",
72 REGISTER_SCX_TEST(&select_cpu_dfl)