TEST(spawn, posix_spawnattr_setsschedparam_posix_spawnattr_getsschedparam) { posix_spawnattr_t sa; ASSERT_EQ(0, posix_spawnattr_init(&sa)); sched_param sp; ASSERT_EQ(0, posix_spawnattr_getschedparam(&sa, &sp)); ASSERT_EQ(0, sp.sched_priority); sched_param sp123 = { .sched_priority = 123 }; ASSERT_EQ(0, posix_spawnattr_setschedparam(&sa, &sp123)); ASSERT_EQ(0, posix_spawnattr_getschedparam(&sa, &sp)); ASSERT_EQ(123, sp.sched_priority); ASSERT_EQ(0, posix_spawnattr_destroy(&sa)); } TEST(spawn, posix_spawnattr_setschedpolicy_posix_spawnattr_getschedpolicy) { posix_spawnattr_t sa; ASSERT_EQ(0, posix_spawnattr_init(&sa)); int p; ASSERT_EQ(0, posix_spawnattr_getschedpolicy(&sa, &p)); ASSERT_EQ(0, p); ASSERT_EQ(0, posix_spawnattr_setschedpolicy(&sa, SCHED_FIFO)); ASSERT_EQ(0, posix_spawnattr_getschedpolicy(&sa, &p)); ASSERT_EQ(SCHED_FIFO, p); ASSERT_EQ(0, posix_spawnattr_destroy(&sa)); }
/** * @fn : tc_libc_spawn_posix_spawnattr_SetGetschedparam * @brief : sets and gets the value of the scheduling parameters attribute * @scenario : The scheduling parameters attribute governs the parameter assigned to a new process image in a spawn operation * @API's covered : posix_spawnattr_init, posix_spawnattr_setschedparam, posix_spawnattr_getschedparam * @Preconditions : posix_spawnattr_init * @Postconditions : none * @Return : void */ static void tc_libc_spawn_posix_spawnattr_setgetschedparam(void) { int ret_chk = ERROR; pid_t pid; struct sched_param setParam; struct sched_param getParam; posix_spawnattr_t st_attr; ret_chk = posix_spawnattr_init(&st_attr); TC_ASSERT_EQ("posix_spawnattr_init", ret_chk, OK); setParam.sched_priority = HIGH_PRIORITY; ret_chk = posix_spawnattr_setschedparam(&st_attr, &setParam); TC_ASSERT_EQ("posix_spawnattr_setschedparam", ret_chk, OK); ret_chk = task_spawn(&pid, "spawn", function_name_spawn, NULL, &st_attr, (char *const *)NULL, (char *const *)NULL); sleep(SEC_4); TC_ASSERT_EQ("task_spawn", ret_chk, OK); ret_chk = posix_spawnattr_getschedparam(&st_attr, &getParam); TC_ASSERT_EQ("posix_spawnattr_getschedparam", ret_chk, OK); TC_ASSERT_EQ("posix_spawnattr_getschedparam", setParam.sched_priority, getParam.sched_priority); TC_SUCCESS_RESULT(); }