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)); }
static int l_posix_spawnattr_getschedpolicy(lua_State *L) { int r; posix_spawnattr_t *attr = luaL_checkudata(L, 1, "posix_spawnattr_t"); int schedpolicy; if (0 != (r = posix_spawnattr_getschedpolicy(attr, &schedpolicy))) { lua_pushnil(L); lua_pushstring(L, strerror(r)); lua_pushinteger(L, r); return 3; } lua_pushinteger(L, schedpolicy); return 1; }
static void tc_libc_spawn_posix_spawnattr_setgetschedpolicy(void) { int ret_chk = ERROR; pid_t pid; posix_spawnattr_t st_attr; int schedpolicy; ret_chk = posix_spawnattr_init(&st_attr); TC_ASSERT_EQ("posix_spawnattr_init", ret_chk, OK); ret_chk = posix_spawnattr_setschedpolicy(&st_attr, SCHED_RR); TC_ASSERT_EQ("posix_spawnattr_setschedpolicy", ret_chk, OK); ret_chk = task_spawn(&pid, "spawn_policy", 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_getschedpolicy(&st_attr, &schedpolicy); TC_ASSERT_EQ("posix_spawnattr_getschedpolicy", ret_chk, OK); TC_ASSERT_EQ("posix_spawnattr_getschedpolicy", schedpolicy, SCHED_RR); TC_SUCCESS_RESULT(); }