//===-- Unittests for sched_{set,get}{scheduler,param} --------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #include "src/errno/libc_errno.h" #include "src/sched/sched_get_priority_max.h" #include "src/sched/sched_get_priority_min.h" #include "src/sched/sched_getparam.h" #include "src/sched/sched_getscheduler.h" #include "src/sched/sched_setparam.h" #include "src/sched/sched_setscheduler.h" #include "src/unistd/getuid.h" #include "test/UnitTest/Test.h" #include <sched.h> // We Test: // SCHED_OTHER, SCHED_FIFO, SCHED_RR // // TODO: Missing two tests. // 1) Missing permissions -> EPERM. Maybe doable by finding // another pid that exists and changing its policy, but that // seems risky. Maybe something with fork/clone would work. // // 2) Unkown pid -> ESRCH. Probably safe to choose a large range // number or scanning current pids and getting one that doesn't // exist, but again seems like it may risk actually changing // sched policy on a running task. // // Linux specific test could also include: // SCHED_ISO, SCHED_DEADLINE class SchedTest : public LIBC_NAMESPACE::testing::Test { … }; #define LIST_SCHED_TESTS(policy, can_set) … // Mandated by POSIX. LIST_SCHED_TESTS(…) LIST_SCHED_TESTS(…) LIST_SCHED_TESTS(…) // Linux extensions. LIST_SCHED_TESTS(…) LIST_SCHED_TESTS(…) TEST(LlvmLibcSchedParamAndSchedulerTest, NullParamTest) { … }