1*0f4c859eSApple OSS Distributions #include <darwintest.h> 2*0f4c859eSApple OSS Distributions #include <signal.h> 3*0f4c859eSApple OSS Distributions #include <spawn.h> 4*0f4c859eSApple OSS Distributions #include <unistd.h> 5*0f4c859eSApple OSS Distributions 6*0f4c859eSApple OSS Distributions #include <mach/mach.h> 7*0f4c859eSApple OSS Distributions #include <mach/mach_types.h> 8*0f4c859eSApple OSS Distributions #include <mach/task.h> 9*0f4c859eSApple OSS Distributions #include <mach/task_policy.h> 10*0f4c859eSApple OSS Distributions 11*0f4c859eSApple OSS Distributions extern char **environ; 12*0f4c859eSApple OSS Distributions 13*0f4c859eSApple OSS Distributions int task_inspect_for_pid(mach_port_name_t target_tport, int pid, mach_port_name_t *t); 14*0f4c859eSApple OSS Distributions int task_for_pid(mach_port_name_t target_tport, int pid, mach_port_name_t *t); 15*0f4c859eSApple OSS Distributions int task_name_for_pid(mach_port_name_t target_tport, int pid, mach_port_name_t *t); 16*0f4c859eSApple OSS Distributions 17*0f4c859eSApple OSS Distributions T_GLOBAL_META(T_META_RUN_CONCURRENTLY(true)); 18*0f4c859eSApple OSS Distributions 19*0f4c859eSApple OSS Distributions #if defined(UNENTITLED) 20*0f4c859eSApple OSS Distributions 21*0f4c859eSApple OSS Distributions T_DECL(task_policy_set_task_name, "task_policy_set with task name (not entitled)") 22*0f4c859eSApple OSS Distributions { 23*0f4c859eSApple OSS Distributions struct task_qos_policy qosinfo = { 24*0f4c859eSApple OSS Distributions .task_latency_qos_tier = LATENCY_QOS_TIER_0, 25*0f4c859eSApple OSS Distributions .task_throughput_qos_tier = THROUGHPUT_QOS_TIER_0, 26*0f4c859eSApple OSS Distributions }; 27*0f4c859eSApple OSS Distributions task_name_t task_name = TASK_NAME_NULL; 28*0f4c859eSApple OSS Distributions 29*0f4c859eSApple OSS Distributions T_SETUPBEGIN; 30*0f4c859eSApple OSS Distributions T_ASSERT_MACH_SUCCESS(task_name_for_pid(mach_task_self(), getpid(), 31*0f4c859eSApple OSS Distributions &task_name), NULL); 32*0f4c859eSApple OSS Distributions T_SETUPEND; 33*0f4c859eSApple OSS Distributions 34*0f4c859eSApple OSS Distributions T_ASSERT_MACH_ERROR(task_policy_set(task_name, 35*0f4c859eSApple OSS Distributions TASK_BASE_QOS_POLICY, 36*0f4c859eSApple OSS Distributions (task_policy_t)&qosinfo, 37*0f4c859eSApple OSS Distributions TASK_QOS_POLICY_COUNT), 38*0f4c859eSApple OSS Distributions KERN_INVALID_ARGUMENT, NULL); 39*0f4c859eSApple OSS Distributions } 40*0f4c859eSApple OSS Distributions 41*0f4c859eSApple OSS Distributions T_DECL(task_policy_set_task, "task_policy_set with task (not entitled)") 42*0f4c859eSApple OSS Distributions { 43*0f4c859eSApple OSS Distributions struct task_qos_policy qosinfo = { 44*0f4c859eSApple OSS Distributions .task_latency_qos_tier = LATENCY_QOS_TIER_0, 45*0f4c859eSApple OSS Distributions .task_throughput_qos_tier = THROUGHPUT_QOS_TIER_0, 46*0f4c859eSApple OSS Distributions }; 47*0f4c859eSApple OSS Distributions 48*0f4c859eSApple OSS Distributions T_ASSERT_MACH_SUCCESS(task_policy_set(mach_task_self(), 49*0f4c859eSApple OSS Distributions TASK_BASE_QOS_POLICY, 50*0f4c859eSApple OSS Distributions (task_policy_t)&qosinfo, 51*0f4c859eSApple OSS Distributions TASK_QOS_POLICY_COUNT), 52*0f4c859eSApple OSS Distributions NULL); 53*0f4c859eSApple OSS Distributions } 54*0f4c859eSApple OSS Distributions 55*0f4c859eSApple OSS Distributions T_DECL(task_policy_set_inspect, "task_policy_set with task inspect (not entitled)") 56*0f4c859eSApple OSS Distributions { 57*0f4c859eSApple OSS Distributions struct task_qos_policy qosinfo = { 58*0f4c859eSApple OSS Distributions .task_latency_qos_tier = LATENCY_QOS_TIER_0, 59*0f4c859eSApple OSS Distributions .task_throughput_qos_tier = THROUGHPUT_QOS_TIER_0, 60*0f4c859eSApple OSS Distributions }; 61*0f4c859eSApple OSS Distributions task_inspect_t task_inspect = TASK_INSPECT_NULL; 62*0f4c859eSApple OSS Distributions 63*0f4c859eSApple OSS Distributions T_SETUPBEGIN; 64*0f4c859eSApple OSS Distributions T_ASSERT_MACH_SUCCESS(task_inspect_for_pid(mach_task_self(), getpid(), 65*0f4c859eSApple OSS Distributions &task_inspect), NULL); 66*0f4c859eSApple OSS Distributions T_SETUPEND; 67*0f4c859eSApple OSS Distributions 68*0f4c859eSApple OSS Distributions 69*0f4c859eSApple OSS Distributions T_ASSERT_MACH_ERROR(task_policy_set(task_inspect, 70*0f4c859eSApple OSS Distributions TASK_BASE_QOS_POLICY, 71*0f4c859eSApple OSS Distributions (task_policy_t)&qosinfo, 72*0f4c859eSApple OSS Distributions TASK_QOS_POLICY_COUNT), 73*0f4c859eSApple OSS Distributions KERN_INVALID_ARGUMENT, NULL); 74*0f4c859eSApple OSS Distributions } 75*0f4c859eSApple OSS Distributions 76*0f4c859eSApple OSS Distributions T_DECL(task_policy_set_foreign_task, "task_policy_set for foreign task (not entitled)", T_META_ASROOT(true)) 77*0f4c859eSApple OSS Distributions { 78*0f4c859eSApple OSS Distributions struct task_qos_policy qosinfo = { 79*0f4c859eSApple OSS Distributions .task_latency_qos_tier = LATENCY_QOS_TIER_0, 80*0f4c859eSApple OSS Distributions .task_throughput_qos_tier = THROUGHPUT_QOS_TIER_0, 81*0f4c859eSApple OSS Distributions }; 82*0f4c859eSApple OSS Distributions task_t task = TASK_NULL; 83*0f4c859eSApple OSS Distributions kern_return_t ret = KERN_FAILURE; 84*0f4c859eSApple OSS Distributions char *args[] = { "sleep", "10", NULL }; 85*0f4c859eSApple OSS Distributions pid_t pid = 0; 86*0f4c859eSApple OSS Distributions 87*0f4c859eSApple OSS Distributions T_SETUPBEGIN; 88*0f4c859eSApple OSS Distributions 89*0f4c859eSApple OSS Distributions ret = posix_spawnp(&pid, args[0], NULL, NULL, args, environ); 90*0f4c859eSApple OSS Distributions T_QUIET; T_ASSERT_POSIX_ZERO(ret, "spawning sleep 10"); 91*0f4c859eSApple OSS Distributions 92*0f4c859eSApple OSS Distributions T_ASSERT_MACH_SUCCESS(task_for_pid(mach_task_self(), pid, 93*0f4c859eSApple OSS Distributions &task), NULL); 94*0f4c859eSApple OSS Distributions T_SETUPEND; 95*0f4c859eSApple OSS Distributions 96*0f4c859eSApple OSS Distributions T_ASSERT_MACH_SUCCESS(task_policy_set(task, 97*0f4c859eSApple OSS Distributions TASK_BASE_QOS_POLICY, 98*0f4c859eSApple OSS Distributions (task_policy_t)&qosinfo, 99*0f4c859eSApple OSS Distributions TASK_QOS_POLICY_COUNT), 100*0f4c859eSApple OSS Distributions NULL); 101*0f4c859eSApple OSS Distributions 102*0f4c859eSApple OSS Distributions ret = kill(pid, SIGTERM); 103*0f4c859eSApple OSS Distributions T_QUIET; T_ASSERT_POSIX_ZERO(ret, "killing sleep"); 104*0f4c859eSApple OSS Distributions } 105*0f4c859eSApple OSS Distributions 106*0f4c859eSApple OSS Distributions T_DECL(task_policy_set_foreign_task_name, "task_policy_set for foreign task name (not entitled)", T_META_ASROOT(true)) 107*0f4c859eSApple OSS Distributions { 108*0f4c859eSApple OSS Distributions struct task_qos_policy qosinfo = { 109*0f4c859eSApple OSS Distributions .task_latency_qos_tier = LATENCY_QOS_TIER_0, 110*0f4c859eSApple OSS Distributions .task_throughput_qos_tier = THROUGHPUT_QOS_TIER_0, 111*0f4c859eSApple OSS Distributions }; 112*0f4c859eSApple OSS Distributions task_name_t task_name = TASK_NAME_NULL; 113*0f4c859eSApple OSS Distributions kern_return_t ret = KERN_FAILURE; 114*0f4c859eSApple OSS Distributions char *args[] = { "sleep", "10", NULL }; 115*0f4c859eSApple OSS Distributions pid_t pid = 0; 116*0f4c859eSApple OSS Distributions 117*0f4c859eSApple OSS Distributions T_SETUPBEGIN; 118*0f4c859eSApple OSS Distributions 119*0f4c859eSApple OSS Distributions ret = posix_spawnp(&pid, args[0], NULL, NULL, args, environ); 120*0f4c859eSApple OSS Distributions T_QUIET; T_ASSERT_POSIX_ZERO(ret, "spawning sleep 10"); 121*0f4c859eSApple OSS Distributions 122*0f4c859eSApple OSS Distributions T_ASSERT_MACH_SUCCESS(task_name_for_pid(mach_task_self(), pid, 123*0f4c859eSApple OSS Distributions &task_name), NULL); 124*0f4c859eSApple OSS Distributions T_SETUPEND; 125*0f4c859eSApple OSS Distributions 126*0f4c859eSApple OSS Distributions T_ASSERT_MACH_ERROR(task_policy_set(task_name, 127*0f4c859eSApple OSS Distributions TASK_BASE_QOS_POLICY, 128*0f4c859eSApple OSS Distributions (task_policy_t)&qosinfo, 129*0f4c859eSApple OSS Distributions TASK_QOS_POLICY_COUNT), 130*0f4c859eSApple OSS Distributions KERN_INVALID_ARGUMENT, NULL); 131*0f4c859eSApple OSS Distributions 132*0f4c859eSApple OSS Distributions ret = kill(pid, SIGTERM); 133*0f4c859eSApple OSS Distributions T_QUIET; T_ASSERT_POSIX_ZERO(ret, "killing sleep"); 134*0f4c859eSApple OSS Distributions } 135*0f4c859eSApple OSS Distributions 136*0f4c859eSApple OSS Distributions T_DECL(task_policy_set_foreign_task_inspect, "task_policy_set for foreign task inspect (not entitled)", T_META_ASROOT(true)) 137*0f4c859eSApple OSS Distributions { 138*0f4c859eSApple OSS Distributions struct task_qos_policy qosinfo = { 139*0f4c859eSApple OSS Distributions .task_latency_qos_tier = LATENCY_QOS_TIER_0, 140*0f4c859eSApple OSS Distributions .task_throughput_qos_tier = THROUGHPUT_QOS_TIER_0, 141*0f4c859eSApple OSS Distributions }; 142*0f4c859eSApple OSS Distributions task_inspect_t task_inspect = TASK_INSPECT_NULL; 143*0f4c859eSApple OSS Distributions kern_return_t ret = KERN_FAILURE; 144*0f4c859eSApple OSS Distributions char *args[] = { "sleep", "10", NULL }; 145*0f4c859eSApple OSS Distributions pid_t pid = 0; 146*0f4c859eSApple OSS Distributions 147*0f4c859eSApple OSS Distributions T_SETUPBEGIN; 148*0f4c859eSApple OSS Distributions 149*0f4c859eSApple OSS Distributions ret = posix_spawnp(&pid, args[0], NULL, NULL, args, environ); 150*0f4c859eSApple OSS Distributions T_QUIET; T_ASSERT_POSIX_ZERO(ret, "spawning sleep 10"); 151*0f4c859eSApple OSS Distributions 152*0f4c859eSApple OSS Distributions T_ASSERT_MACH_SUCCESS(task_inspect_for_pid(mach_task_self(), pid, 153*0f4c859eSApple OSS Distributions &task_inspect), NULL); 154*0f4c859eSApple OSS Distributions T_SETUPEND; 155*0f4c859eSApple OSS Distributions 156*0f4c859eSApple OSS Distributions T_ASSERT_MACH_ERROR(task_policy_set(task_inspect, 157*0f4c859eSApple OSS Distributions TASK_BASE_QOS_POLICY, 158*0f4c859eSApple OSS Distributions (task_policy_t)&qosinfo, 159*0f4c859eSApple OSS Distributions TASK_QOS_POLICY_COUNT), 160*0f4c859eSApple OSS Distributions KERN_INVALID_ARGUMENT, NULL); 161*0f4c859eSApple OSS Distributions 162*0f4c859eSApple OSS Distributions ret = kill(pid, SIGTERM); 163*0f4c859eSApple OSS Distributions T_QUIET; T_ASSERT_POSIX_ZERO(ret, "killing sleep"); 164*0f4c859eSApple OSS Distributions } 165*0f4c859eSApple OSS Distributions 166*0f4c859eSApple OSS Distributions T_DECL(task_policy_get_name, "task_policy_get with task name (not entitled)") 167*0f4c859eSApple OSS Distributions { 168*0f4c859eSApple OSS Distributions task_name_t task_name = TASK_NAME_NULL; 169*0f4c859eSApple OSS Distributions struct task_category_policy role[TASK_CATEGORY_POLICY_COUNT]; 170*0f4c859eSApple OSS Distributions mach_msg_type_number_t count = TASK_CATEGORY_POLICY_COUNT; 171*0f4c859eSApple OSS Distributions boolean_t get_default = FALSE; 172*0f4c859eSApple OSS Distributions 173*0f4c859eSApple OSS Distributions T_SETUPBEGIN; 174*0f4c859eSApple OSS Distributions T_ASSERT_MACH_SUCCESS(task_name_for_pid(mach_task_self(), getpid(), 175*0f4c859eSApple OSS Distributions &task_name), NULL); 176*0f4c859eSApple OSS Distributions T_SETUPEND; 177*0f4c859eSApple OSS Distributions 178*0f4c859eSApple OSS Distributions T_ASSERT_MACH_ERROR(task_policy_get(task_name, 179*0f4c859eSApple OSS Distributions TASK_CATEGORY_POLICY, 180*0f4c859eSApple OSS Distributions (task_policy_t)role, 181*0f4c859eSApple OSS Distributions &count, 182*0f4c859eSApple OSS Distributions &get_default), 183*0f4c859eSApple OSS Distributions KERN_INVALID_ARGUMENT, NULL); 184*0f4c859eSApple OSS Distributions } 185*0f4c859eSApple OSS Distributions 186*0f4c859eSApple OSS Distributions T_DECL(task_policy_get_task, "task_policy_get with task (not entitled)") 187*0f4c859eSApple OSS Distributions { 188*0f4c859eSApple OSS Distributions struct task_category_policy role[TASK_CATEGORY_POLICY_COUNT]; 189*0f4c859eSApple OSS Distributions mach_msg_type_number_t count = TASK_CATEGORY_POLICY_COUNT; 190*0f4c859eSApple OSS Distributions boolean_t get_default = FALSE; 191*0f4c859eSApple OSS Distributions 192*0f4c859eSApple OSS Distributions T_ASSERT_MACH_SUCCESS(task_policy_get(mach_task_self(), 193*0f4c859eSApple OSS Distributions TASK_CATEGORY_POLICY, 194*0f4c859eSApple OSS Distributions (task_policy_t)role, 195*0f4c859eSApple OSS Distributions &count, 196*0f4c859eSApple OSS Distributions &get_default), 197*0f4c859eSApple OSS Distributions NULL); 198*0f4c859eSApple OSS Distributions } 199*0f4c859eSApple OSS Distributions 200*0f4c859eSApple OSS Distributions T_DECL(task_policy_get_inspect, "task_policy_get with task inspect (not entitled)") 201*0f4c859eSApple OSS Distributions { 202*0f4c859eSApple OSS Distributions task_inspect_t task_inspect = TASK_INSPECT_NULL; 203*0f4c859eSApple OSS Distributions struct task_category_policy role[TASK_CATEGORY_POLICY_COUNT]; 204*0f4c859eSApple OSS Distributions mach_msg_type_number_t count = TASK_CATEGORY_POLICY_COUNT; 205*0f4c859eSApple OSS Distributions boolean_t get_default = FALSE; 206*0f4c859eSApple OSS Distributions 207*0f4c859eSApple OSS Distributions T_SETUPBEGIN; 208*0f4c859eSApple OSS Distributions T_ASSERT_MACH_SUCCESS(task_inspect_for_pid(mach_task_self(), getpid(), 209*0f4c859eSApple OSS Distributions &task_inspect), NULL); 210*0f4c859eSApple OSS Distributions T_SETUPEND; 211*0f4c859eSApple OSS Distributions 212*0f4c859eSApple OSS Distributions T_ASSERT_MACH_SUCCESS(task_policy_get(task_inspect, 213*0f4c859eSApple OSS Distributions TASK_CATEGORY_POLICY, 214*0f4c859eSApple OSS Distributions (task_policy_t)role, 215*0f4c859eSApple OSS Distributions &count, 216*0f4c859eSApple OSS Distributions &get_default), 217*0f4c859eSApple OSS Distributions NULL); 218*0f4c859eSApple OSS Distributions } 219*0f4c859eSApple OSS Distributions 220*0f4c859eSApple OSS Distributions T_DECL(task_policy_get_foreign_task_inspect, "task_policy_get for foreign task inspect (not entitled)", T_META_ASROOT(true)) 221*0f4c859eSApple OSS Distributions { 222*0f4c859eSApple OSS Distributions task_inspect_t task_inspect = TASK_INSPECT_NULL; 223*0f4c859eSApple OSS Distributions struct task_category_policy role[TASK_CATEGORY_POLICY_COUNT]; 224*0f4c859eSApple OSS Distributions mach_msg_type_number_t count = TASK_CATEGORY_POLICY_COUNT; 225*0f4c859eSApple OSS Distributions boolean_t get_default = FALSE; 226*0f4c859eSApple OSS Distributions kern_return_t ret = KERN_FAILURE; 227*0f4c859eSApple OSS Distributions char *args[] = { "sleep", "10", NULL }; 228*0f4c859eSApple OSS Distributions pid_t pid = 0; 229*0f4c859eSApple OSS Distributions 230*0f4c859eSApple OSS Distributions T_SETUPBEGIN; 231*0f4c859eSApple OSS Distributions 232*0f4c859eSApple OSS Distributions ret = posix_spawnp(&pid, args[0], NULL, NULL, args, environ); 233*0f4c859eSApple OSS Distributions T_QUIET; T_ASSERT_POSIX_ZERO(ret, "spawning sleep 10"); 234*0f4c859eSApple OSS Distributions 235*0f4c859eSApple OSS Distributions T_ASSERT_MACH_SUCCESS(task_inspect_for_pid(mach_task_self(), pid, 236*0f4c859eSApple OSS Distributions &task_inspect), NULL); 237*0f4c859eSApple OSS Distributions T_SETUPEND; 238*0f4c859eSApple OSS Distributions 239*0f4c859eSApple OSS Distributions T_ASSERT_MACH_SUCCESS(task_policy_get(task_inspect, 240*0f4c859eSApple OSS Distributions TASK_CATEGORY_POLICY, 241*0f4c859eSApple OSS Distributions (task_policy_t)role, 242*0f4c859eSApple OSS Distributions &count, 243*0f4c859eSApple OSS Distributions &get_default), 244*0f4c859eSApple OSS Distributions NULL); 245*0f4c859eSApple OSS Distributions 246*0f4c859eSApple OSS Distributions ret = kill(pid, SIGTERM); 247*0f4c859eSApple OSS Distributions T_QUIET; T_ASSERT_POSIX_ZERO(ret, "killing sleep"); 248*0f4c859eSApple OSS Distributions } 249*0f4c859eSApple OSS Distributions 250*0f4c859eSApple OSS Distributions T_DECL(task_policy_get_foreign_task, "task_policy_get for foreign task (not entitled)", T_META_ASROOT(true)) 251*0f4c859eSApple OSS Distributions { 252*0f4c859eSApple OSS Distributions task_t task = TASK_NULL; 253*0f4c859eSApple OSS Distributions struct task_category_policy role[TASK_CATEGORY_POLICY_COUNT]; 254*0f4c859eSApple OSS Distributions mach_msg_type_number_t count = TASK_CATEGORY_POLICY_COUNT; 255*0f4c859eSApple OSS Distributions boolean_t get_default = FALSE; 256*0f4c859eSApple OSS Distributions kern_return_t ret = KERN_FAILURE; 257*0f4c859eSApple OSS Distributions char *args[] = { "sleep", "10", NULL }; 258*0f4c859eSApple OSS Distributions pid_t pid = 0; 259*0f4c859eSApple OSS Distributions 260*0f4c859eSApple OSS Distributions T_SETUPBEGIN; 261*0f4c859eSApple OSS Distributions 262*0f4c859eSApple OSS Distributions ret = posix_spawnp(&pid, args[0], NULL, NULL, args, environ); 263*0f4c859eSApple OSS Distributions T_QUIET; T_ASSERT_POSIX_ZERO(ret, "spawning sleep 10"); 264*0f4c859eSApple OSS Distributions 265*0f4c859eSApple OSS Distributions T_ASSERT_MACH_SUCCESS(task_for_pid(mach_task_self(), pid, 266*0f4c859eSApple OSS Distributions &task), NULL); 267*0f4c859eSApple OSS Distributions T_SETUPEND; 268*0f4c859eSApple OSS Distributions 269*0f4c859eSApple OSS Distributions T_ASSERT_MACH_SUCCESS(task_policy_get(task, 270*0f4c859eSApple OSS Distributions TASK_CATEGORY_POLICY, 271*0f4c859eSApple OSS Distributions (task_policy_t)role, 272*0f4c859eSApple OSS Distributions &count, 273*0f4c859eSApple OSS Distributions &get_default), 274*0f4c859eSApple OSS Distributions NULL); 275*0f4c859eSApple OSS Distributions 276*0f4c859eSApple OSS Distributions ret = kill(pid, SIGTERM); 277*0f4c859eSApple OSS Distributions T_QUIET; T_ASSERT_POSIX_ZERO(ret, "killing sleep"); 278*0f4c859eSApple OSS Distributions } 279*0f4c859eSApple OSS Distributions 280*0f4c859eSApple OSS Distributions T_DECL(task_policy_get_foreign_task_name, "task_policy_get for foreign task name (not entitled)") 281*0f4c859eSApple OSS Distributions { 282*0f4c859eSApple OSS Distributions task_name_t task_name = TASK_NAME_NULL; 283*0f4c859eSApple OSS Distributions struct task_category_policy role[TASK_CATEGORY_POLICY_COUNT]; 284*0f4c859eSApple OSS Distributions mach_msg_type_number_t count = TASK_CATEGORY_POLICY_COUNT; 285*0f4c859eSApple OSS Distributions boolean_t get_default = FALSE; 286*0f4c859eSApple OSS Distributions kern_return_t ret = KERN_FAILURE; 287*0f4c859eSApple OSS Distributions char *args[] = { "sleep", "10", NULL }; 288*0f4c859eSApple OSS Distributions pid_t pid = 0; 289*0f4c859eSApple OSS Distributions 290*0f4c859eSApple OSS Distributions T_SETUPBEGIN; 291*0f4c859eSApple OSS Distributions 292*0f4c859eSApple OSS Distributions ret = posix_spawnp(&pid, args[0], NULL, NULL, args, environ); 293*0f4c859eSApple OSS Distributions T_QUIET; T_ASSERT_POSIX_ZERO(ret, "spawning sleep 10"); 294*0f4c859eSApple OSS Distributions 295*0f4c859eSApple OSS Distributions T_ASSERT_MACH_SUCCESS(task_name_for_pid(mach_task_self(), pid, 296*0f4c859eSApple OSS Distributions &task_name), NULL); 297*0f4c859eSApple OSS Distributions T_SETUPEND; 298*0f4c859eSApple OSS Distributions 299*0f4c859eSApple OSS Distributions T_ASSERT_MACH_ERROR(task_policy_get(task_name, 300*0f4c859eSApple OSS Distributions TASK_CATEGORY_POLICY, 301*0f4c859eSApple OSS Distributions (task_policy_t)role, 302*0f4c859eSApple OSS Distributions &count, 303*0f4c859eSApple OSS Distributions &get_default), 304*0f4c859eSApple OSS Distributions KERN_INVALID_ARGUMENT, NULL); 305*0f4c859eSApple OSS Distributions 306*0f4c859eSApple OSS Distributions ret = kill(pid, SIGTERM); 307*0f4c859eSApple OSS Distributions T_QUIET; T_ASSERT_POSIX_ZERO(ret, "killing sleep"); 308*0f4c859eSApple OSS Distributions } 309*0f4c859eSApple OSS Distributions 310*0f4c859eSApple OSS Distributions #else /* ENTITLED */ 311*0f4c859eSApple OSS Distributions 312*0f4c859eSApple OSS Distributions T_DECL(task_policy_set_task_name_entitled, "task_policy_set with task name (entitled)", T_META_ASROOT(true), T_META_ASROOT(true)) 313*0f4c859eSApple OSS Distributions { 314*0f4c859eSApple OSS Distributions struct task_qos_policy qosinfo = { 315*0f4c859eSApple OSS Distributions .task_latency_qos_tier = LATENCY_QOS_TIER_0, 316*0f4c859eSApple OSS Distributions .task_throughput_qos_tier = THROUGHPUT_QOS_TIER_0, 317*0f4c859eSApple OSS Distributions }; 318*0f4c859eSApple OSS Distributions task_name_t task_name = TASK_NAME_NULL; 319*0f4c859eSApple OSS Distributions 320*0f4c859eSApple OSS Distributions T_SETUPBEGIN; 321*0f4c859eSApple OSS Distributions T_ASSERT_MACH_SUCCESS(task_name_for_pid(mach_task_self(), getpid(), 322*0f4c859eSApple OSS Distributions &task_name), NULL); 323*0f4c859eSApple OSS Distributions T_SETUPEND; 324*0f4c859eSApple OSS Distributions 325*0f4c859eSApple OSS Distributions T_ASSERT_MACH_SUCCESS(task_policy_set(task_name, 326*0f4c859eSApple OSS Distributions TASK_BASE_QOS_POLICY, 327*0f4c859eSApple OSS Distributions (task_policy_t)&qosinfo, 328*0f4c859eSApple OSS Distributions TASK_QOS_POLICY_COUNT), 329*0f4c859eSApple OSS Distributions NULL); 330*0f4c859eSApple OSS Distributions } 331*0f4c859eSApple OSS Distributions 332*0f4c859eSApple OSS Distributions T_DECL(task_policy_set_task_entitled, "task_policy_set with task (entitled)") 333*0f4c859eSApple OSS Distributions { 334*0f4c859eSApple OSS Distributions struct task_qos_policy qosinfo = { 335*0f4c859eSApple OSS Distributions .task_latency_qos_tier = LATENCY_QOS_TIER_0, 336*0f4c859eSApple OSS Distributions .task_throughput_qos_tier = THROUGHPUT_QOS_TIER_0, 337*0f4c859eSApple OSS Distributions }; 338*0f4c859eSApple OSS Distributions 339*0f4c859eSApple OSS Distributions T_ASSERT_MACH_SUCCESS(task_policy_set(mach_task_self(), 340*0f4c859eSApple OSS Distributions TASK_BASE_QOS_POLICY, 341*0f4c859eSApple OSS Distributions (task_policy_t)&qosinfo, 342*0f4c859eSApple OSS Distributions TASK_QOS_POLICY_COUNT), 343*0f4c859eSApple OSS Distributions NULL); 344*0f4c859eSApple OSS Distributions } 345*0f4c859eSApple OSS Distributions 346*0f4c859eSApple OSS Distributions T_DECL(task_policy_set_inspect_entitled, "task_policy_set with task inspect (entitled)") 347*0f4c859eSApple OSS Distributions { 348*0f4c859eSApple OSS Distributions struct task_qos_policy qosinfo = { 349*0f4c859eSApple OSS Distributions .task_latency_qos_tier = LATENCY_QOS_TIER_0, 350*0f4c859eSApple OSS Distributions .task_throughput_qos_tier = THROUGHPUT_QOS_TIER_0, 351*0f4c859eSApple OSS Distributions }; 352*0f4c859eSApple OSS Distributions task_inspect_t task_inspect = TASK_INSPECT_NULL; 353*0f4c859eSApple OSS Distributions 354*0f4c859eSApple OSS Distributions T_SETUPBEGIN; 355*0f4c859eSApple OSS Distributions T_ASSERT_MACH_SUCCESS(task_inspect_for_pid(mach_task_self(), getpid(), 356*0f4c859eSApple OSS Distributions &task_inspect), NULL); 357*0f4c859eSApple OSS Distributions T_SETUPEND; 358*0f4c859eSApple OSS Distributions 359*0f4c859eSApple OSS Distributions T_ASSERT_MACH_SUCCESS(task_policy_set(task_inspect, 360*0f4c859eSApple OSS Distributions TASK_BASE_QOS_POLICY, 361*0f4c859eSApple OSS Distributions (task_policy_t)&qosinfo, 362*0f4c859eSApple OSS Distributions TASK_QOS_POLICY_COUNT), 363*0f4c859eSApple OSS Distributions NULL); 364*0f4c859eSApple OSS Distributions } 365*0f4c859eSApple OSS Distributions 366*0f4c859eSApple OSS Distributions T_DECL(task_policy_set_foreign_task_entitled, "task_policy_set for foreign task (entitled)", T_META_ASROOT(true)) 367*0f4c859eSApple OSS Distributions { 368*0f4c859eSApple OSS Distributions struct task_qos_policy qosinfo = { 369*0f4c859eSApple OSS Distributions .task_latency_qos_tier = LATENCY_QOS_TIER_0, 370*0f4c859eSApple OSS Distributions .task_throughput_qos_tier = THROUGHPUT_QOS_TIER_0, 371*0f4c859eSApple OSS Distributions }; 372*0f4c859eSApple OSS Distributions task_t task = TASK_NULL; 373*0f4c859eSApple OSS Distributions kern_return_t ret = KERN_FAILURE; 374*0f4c859eSApple OSS Distributions char *args[] = { "sleep", "10", NULL }; 375*0f4c859eSApple OSS Distributions pid_t pid = 0; 376*0f4c859eSApple OSS Distributions 377*0f4c859eSApple OSS Distributions T_SETUPBEGIN; 378*0f4c859eSApple OSS Distributions 379*0f4c859eSApple OSS Distributions ret = posix_spawnp(&pid, args[0], NULL, NULL, args, environ); 380*0f4c859eSApple OSS Distributions T_QUIET; T_ASSERT_POSIX_ZERO(ret, "spawning sleep 10"); 381*0f4c859eSApple OSS Distributions 382*0f4c859eSApple OSS Distributions T_ASSERT_MACH_SUCCESS(task_for_pid(mach_task_self(), pid, 383*0f4c859eSApple OSS Distributions &task), NULL); 384*0f4c859eSApple OSS Distributions T_SETUPEND; 385*0f4c859eSApple OSS Distributions 386*0f4c859eSApple OSS Distributions T_ASSERT_MACH_SUCCESS(task_policy_set(task, 387*0f4c859eSApple OSS Distributions TASK_BASE_QOS_POLICY, 388*0f4c859eSApple OSS Distributions (task_policy_t)&qosinfo, 389*0f4c859eSApple OSS Distributions TASK_QOS_POLICY_COUNT), 390*0f4c859eSApple OSS Distributions NULL); 391*0f4c859eSApple OSS Distributions 392*0f4c859eSApple OSS Distributions ret = kill(pid, SIGTERM); 393*0f4c859eSApple OSS Distributions T_QUIET; T_ASSERT_POSIX_ZERO(ret, "killing sleep"); 394*0f4c859eSApple OSS Distributions } 395*0f4c859eSApple OSS Distributions 396*0f4c859eSApple OSS Distributions T_DECL(task_policy_set_foreign_task_name_entitled, "task_policy_set for foreign task name (entitled)", T_META_ASROOT(true), T_META_ASROOT(true)) 397*0f4c859eSApple OSS Distributions { 398*0f4c859eSApple OSS Distributions struct task_qos_policy qosinfo = { 399*0f4c859eSApple OSS Distributions .task_latency_qos_tier = LATENCY_QOS_TIER_0, 400*0f4c859eSApple OSS Distributions .task_throughput_qos_tier = THROUGHPUT_QOS_TIER_0, 401*0f4c859eSApple OSS Distributions }; 402*0f4c859eSApple OSS Distributions task_name_t task_name = TASK_NAME_NULL; 403*0f4c859eSApple OSS Distributions kern_return_t ret = KERN_FAILURE; 404*0f4c859eSApple OSS Distributions char *args[] = { "sleep", "10", NULL }; 405*0f4c859eSApple OSS Distributions pid_t pid = 0; 406*0f4c859eSApple OSS Distributions 407*0f4c859eSApple OSS Distributions T_SETUPBEGIN; 408*0f4c859eSApple OSS Distributions 409*0f4c859eSApple OSS Distributions ret = posix_spawnp(&pid, args[0], NULL, NULL, args, environ); 410*0f4c859eSApple OSS Distributions T_QUIET; T_ASSERT_POSIX_ZERO(ret, "spawning sleep 10"); 411*0f4c859eSApple OSS Distributions 412*0f4c859eSApple OSS Distributions T_ASSERT_MACH_SUCCESS(task_name_for_pid(mach_task_self(), pid, 413*0f4c859eSApple OSS Distributions &task_name), NULL); 414*0f4c859eSApple OSS Distributions T_SETUPEND; 415*0f4c859eSApple OSS Distributions 416*0f4c859eSApple OSS Distributions T_ASSERT_MACH_SUCCESS(task_policy_set(task_name, 417*0f4c859eSApple OSS Distributions TASK_BASE_QOS_POLICY, 418*0f4c859eSApple OSS Distributions (task_policy_t)&qosinfo, 419*0f4c859eSApple OSS Distributions TASK_QOS_POLICY_COUNT), 420*0f4c859eSApple OSS Distributions NULL); 421*0f4c859eSApple OSS Distributions 422*0f4c859eSApple OSS Distributions ret = kill(pid, SIGTERM); 423*0f4c859eSApple OSS Distributions T_QUIET; T_ASSERT_POSIX_ZERO(ret, "killing sleep"); 424*0f4c859eSApple OSS Distributions } 425*0f4c859eSApple OSS Distributions 426*0f4c859eSApple OSS Distributions T_DECL(task_policy_set_foreign_task_inspect_entitled, "task_policy_set for foreign task inspect (entitled)", T_META_ASROOT(true)) 427*0f4c859eSApple OSS Distributions { 428*0f4c859eSApple OSS Distributions struct task_qos_policy qosinfo = { 429*0f4c859eSApple OSS Distributions .task_latency_qos_tier = LATENCY_QOS_TIER_0, 430*0f4c859eSApple OSS Distributions .task_throughput_qos_tier = THROUGHPUT_QOS_TIER_0, 431*0f4c859eSApple OSS Distributions }; 432*0f4c859eSApple OSS Distributions task_inspect_t task_inspect = TASK_INSPECT_NULL; 433*0f4c859eSApple OSS Distributions kern_return_t ret = KERN_FAILURE; 434*0f4c859eSApple OSS Distributions char *args[] = { "sleep", "10", NULL }; 435*0f4c859eSApple OSS Distributions pid_t pid = 0; 436*0f4c859eSApple OSS Distributions 437*0f4c859eSApple OSS Distributions T_SETUPBEGIN; 438*0f4c859eSApple OSS Distributions 439*0f4c859eSApple OSS Distributions ret = posix_spawnp(&pid, args[0], NULL, NULL, args, environ); 440*0f4c859eSApple OSS Distributions T_QUIET; T_ASSERT_POSIX_ZERO(ret, "spawning sleep 10"); 441*0f4c859eSApple OSS Distributions 442*0f4c859eSApple OSS Distributions T_ASSERT_MACH_SUCCESS(task_inspect_for_pid(mach_task_self(), pid, 443*0f4c859eSApple OSS Distributions &task_inspect), NULL); 444*0f4c859eSApple OSS Distributions T_SETUPEND; 445*0f4c859eSApple OSS Distributions 446*0f4c859eSApple OSS Distributions T_ASSERT_MACH_SUCCESS(task_policy_set(task_inspect, 447*0f4c859eSApple OSS Distributions TASK_BASE_QOS_POLICY, 448*0f4c859eSApple OSS Distributions (task_policy_t)&qosinfo, 449*0f4c859eSApple OSS Distributions TASK_QOS_POLICY_COUNT), 450*0f4c859eSApple OSS Distributions NULL); 451*0f4c859eSApple OSS Distributions 452*0f4c859eSApple OSS Distributions ret = kill(pid, SIGTERM); 453*0f4c859eSApple OSS Distributions T_QUIET; T_ASSERT_POSIX_ZERO(ret, "killing sleep"); 454*0f4c859eSApple OSS Distributions } 455*0f4c859eSApple OSS Distributions 456*0f4c859eSApple OSS Distributions T_DECL(task_policy_get_name_entitled, "task_policy_get with task name (entitled)", T_META_ASROOT(true)) 457*0f4c859eSApple OSS Distributions { 458*0f4c859eSApple OSS Distributions task_name_t task_name = TASK_NAME_NULL; 459*0f4c859eSApple OSS Distributions struct task_category_policy role[TASK_CATEGORY_POLICY_COUNT]; 460*0f4c859eSApple OSS Distributions mach_msg_type_number_t count = TASK_CATEGORY_POLICY_COUNT; 461*0f4c859eSApple OSS Distributions boolean_t get_default = FALSE; 462*0f4c859eSApple OSS Distributions 463*0f4c859eSApple OSS Distributions T_SETUPBEGIN; 464*0f4c859eSApple OSS Distributions T_ASSERT_MACH_SUCCESS(task_name_for_pid(mach_task_self(), getpid(), 465*0f4c859eSApple OSS Distributions &task_name), NULL); 466*0f4c859eSApple OSS Distributions T_SETUPEND; 467*0f4c859eSApple OSS Distributions 468*0f4c859eSApple OSS Distributions T_ASSERT_MACH_SUCCESS(task_policy_get(task_name, 469*0f4c859eSApple OSS Distributions TASK_CATEGORY_POLICY, 470*0f4c859eSApple OSS Distributions (task_policy_t)role, 471*0f4c859eSApple OSS Distributions &count, 472*0f4c859eSApple OSS Distributions &get_default), 473*0f4c859eSApple OSS Distributions NULL); 474*0f4c859eSApple OSS Distributions } 475*0f4c859eSApple OSS Distributions 476*0f4c859eSApple OSS Distributions T_DECL(task_policy_get_task_entitled, "task_policy_get with task (entitled)") 477*0f4c859eSApple OSS Distributions { 478*0f4c859eSApple OSS Distributions struct task_category_policy role[TASK_CATEGORY_POLICY_COUNT]; 479*0f4c859eSApple OSS Distributions mach_msg_type_number_t count = TASK_CATEGORY_POLICY_COUNT; 480*0f4c859eSApple OSS Distributions boolean_t get_default = FALSE; 481*0f4c859eSApple OSS Distributions 482*0f4c859eSApple OSS Distributions T_ASSERT_MACH_SUCCESS(task_policy_get(mach_task_self(), 483*0f4c859eSApple OSS Distributions TASK_CATEGORY_POLICY, 484*0f4c859eSApple OSS Distributions (task_policy_t)role, 485*0f4c859eSApple OSS Distributions &count, 486*0f4c859eSApple OSS Distributions &get_default), 487*0f4c859eSApple OSS Distributions NULL); 488*0f4c859eSApple OSS Distributions } 489*0f4c859eSApple OSS Distributions 490*0f4c859eSApple OSS Distributions T_DECL(task_policy_get_inspect_entitled, "task_policy_get with task inspect (entitled)") 491*0f4c859eSApple OSS Distributions { 492*0f4c859eSApple OSS Distributions task_inspect_t task_inspect = TASK_INSPECT_NULL; 493*0f4c859eSApple OSS Distributions struct task_category_policy role[TASK_CATEGORY_POLICY_COUNT]; 494*0f4c859eSApple OSS Distributions mach_msg_type_number_t count = TASK_CATEGORY_POLICY_COUNT; 495*0f4c859eSApple OSS Distributions boolean_t get_default = FALSE; 496*0f4c859eSApple OSS Distributions 497*0f4c859eSApple OSS Distributions T_SETUPBEGIN; 498*0f4c859eSApple OSS Distributions T_ASSERT_MACH_SUCCESS(task_inspect_for_pid(mach_task_self(), getpid(), 499*0f4c859eSApple OSS Distributions &task_inspect), NULL); 500*0f4c859eSApple OSS Distributions T_SETUPEND; 501*0f4c859eSApple OSS Distributions 502*0f4c859eSApple OSS Distributions T_ASSERT_MACH_SUCCESS(task_policy_get(task_inspect, 503*0f4c859eSApple OSS Distributions TASK_CATEGORY_POLICY, 504*0f4c859eSApple OSS Distributions (task_policy_t)role, 505*0f4c859eSApple OSS Distributions &count, 506*0f4c859eSApple OSS Distributions &get_default), 507*0f4c859eSApple OSS Distributions NULL); 508*0f4c859eSApple OSS Distributions } 509*0f4c859eSApple OSS Distributions 510*0f4c859eSApple OSS Distributions T_DECL(task_policy_get_foreign_task_inspect_entitled, "task_policy_get for foreign task inspect (entitled)", T_META_ASROOT(true)) 511*0f4c859eSApple OSS Distributions { 512*0f4c859eSApple OSS Distributions task_inspect_t task_inspect = TASK_INSPECT_NULL; 513*0f4c859eSApple OSS Distributions struct task_category_policy role[TASK_CATEGORY_POLICY_COUNT]; 514*0f4c859eSApple OSS Distributions mach_msg_type_number_t count = TASK_CATEGORY_POLICY_COUNT; 515*0f4c859eSApple OSS Distributions boolean_t get_default = FALSE; 516*0f4c859eSApple OSS Distributions kern_return_t ret = KERN_FAILURE; 517*0f4c859eSApple OSS Distributions char *args[] = { "sleep", "10", NULL }; 518*0f4c859eSApple OSS Distributions pid_t pid = 0; 519*0f4c859eSApple OSS Distributions 520*0f4c859eSApple OSS Distributions T_SETUPBEGIN; 521*0f4c859eSApple OSS Distributions 522*0f4c859eSApple OSS Distributions ret = posix_spawnp(&pid, args[0], NULL, NULL, args, environ); 523*0f4c859eSApple OSS Distributions T_QUIET; T_ASSERT_POSIX_ZERO(ret, "spawning sleep 10"); 524*0f4c859eSApple OSS Distributions 525*0f4c859eSApple OSS Distributions T_ASSERT_MACH_SUCCESS(task_inspect_for_pid(mach_task_self(), pid, 526*0f4c859eSApple OSS Distributions &task_inspect), NULL); 527*0f4c859eSApple OSS Distributions T_SETUPEND; 528*0f4c859eSApple OSS Distributions 529*0f4c859eSApple OSS Distributions T_ASSERT_MACH_SUCCESS(task_policy_get(task_inspect, 530*0f4c859eSApple OSS Distributions TASK_CATEGORY_POLICY, 531*0f4c859eSApple OSS Distributions (task_policy_t)role, 532*0f4c859eSApple OSS Distributions &count, 533*0f4c859eSApple OSS Distributions &get_default), 534*0f4c859eSApple OSS Distributions NULL); 535*0f4c859eSApple OSS Distributions 536*0f4c859eSApple OSS Distributions ret = kill(pid, SIGTERM); 537*0f4c859eSApple OSS Distributions T_QUIET; T_ASSERT_POSIX_ZERO(ret, "killing sleep"); 538*0f4c859eSApple OSS Distributions } 539*0f4c859eSApple OSS Distributions 540*0f4c859eSApple OSS Distributions T_DECL(task_policy_get_foreign_task_entitled, "task_policy_get for foreign task (entitled)", T_META_ASROOT(true)) 541*0f4c859eSApple OSS Distributions { 542*0f4c859eSApple OSS Distributions task_t task = TASK_NULL; 543*0f4c859eSApple OSS Distributions struct task_category_policy role[TASK_CATEGORY_POLICY_COUNT]; 544*0f4c859eSApple OSS Distributions mach_msg_type_number_t count = TASK_CATEGORY_POLICY_COUNT; 545*0f4c859eSApple OSS Distributions boolean_t get_default = FALSE; 546*0f4c859eSApple OSS Distributions kern_return_t ret = KERN_FAILURE; 547*0f4c859eSApple OSS Distributions char *args[] = { "sleep", "10", NULL }; 548*0f4c859eSApple OSS Distributions pid_t pid = 0; 549*0f4c859eSApple OSS Distributions 550*0f4c859eSApple OSS Distributions T_SETUPBEGIN; 551*0f4c859eSApple OSS Distributions 552*0f4c859eSApple OSS Distributions ret = posix_spawnp(&pid, args[0], NULL, NULL, args, environ); 553*0f4c859eSApple OSS Distributions T_QUIET; T_ASSERT_POSIX_ZERO(ret, "spawning sleep 10"); 554*0f4c859eSApple OSS Distributions 555*0f4c859eSApple OSS Distributions T_ASSERT_MACH_SUCCESS(task_for_pid(mach_task_self(), pid, 556*0f4c859eSApple OSS Distributions &task), NULL); 557*0f4c859eSApple OSS Distributions T_SETUPEND; 558*0f4c859eSApple OSS Distributions 559*0f4c859eSApple OSS Distributions T_ASSERT_MACH_SUCCESS(task_policy_get(task, 560*0f4c859eSApple OSS Distributions TASK_CATEGORY_POLICY, 561*0f4c859eSApple OSS Distributions (task_policy_t)role, 562*0f4c859eSApple OSS Distributions &count, 563*0f4c859eSApple OSS Distributions &get_default), 564*0f4c859eSApple OSS Distributions NULL); 565*0f4c859eSApple OSS Distributions 566*0f4c859eSApple OSS Distributions ret = kill(pid, SIGTERM); 567*0f4c859eSApple OSS Distributions T_QUIET; T_ASSERT_POSIX_ZERO(ret, "killing sleep"); 568*0f4c859eSApple OSS Distributions } 569*0f4c859eSApple OSS Distributions 570*0f4c859eSApple OSS Distributions T_DECL(task_policy_get_foreign_task_name_entitled, "task_policy_get for foreign task name (entitled)", T_META_ASROOT(true)) 571*0f4c859eSApple OSS Distributions { 572*0f4c859eSApple OSS Distributions task_name_t task_name = TASK_NAME_NULL; 573*0f4c859eSApple OSS Distributions struct task_category_policy role[TASK_CATEGORY_POLICY_COUNT]; 574*0f4c859eSApple OSS Distributions mach_msg_type_number_t count = TASK_CATEGORY_POLICY_COUNT; 575*0f4c859eSApple OSS Distributions boolean_t get_default = FALSE; 576*0f4c859eSApple OSS Distributions kern_return_t ret = KERN_FAILURE; 577*0f4c859eSApple OSS Distributions char *args[] = { "sleep", "10", NULL }; 578*0f4c859eSApple OSS Distributions pid_t pid = 0; 579*0f4c859eSApple OSS Distributions 580*0f4c859eSApple OSS Distributions T_SETUPBEGIN; 581*0f4c859eSApple OSS Distributions 582*0f4c859eSApple OSS Distributions ret = posix_spawnp(&pid, args[0], NULL, NULL, args, environ); 583*0f4c859eSApple OSS Distributions T_QUIET; T_ASSERT_POSIX_ZERO(ret, "spawning sleep 10"); 584*0f4c859eSApple OSS Distributions 585*0f4c859eSApple OSS Distributions T_ASSERT_MACH_SUCCESS(task_name_for_pid(mach_task_self(), pid, 586*0f4c859eSApple OSS Distributions &task_name), NULL); 587*0f4c859eSApple OSS Distributions T_SETUPEND; 588*0f4c859eSApple OSS Distributions 589*0f4c859eSApple OSS Distributions T_ASSERT_MACH_SUCCESS(task_policy_get(task_name, 590*0f4c859eSApple OSS Distributions TASK_CATEGORY_POLICY, 591*0f4c859eSApple OSS Distributions (task_policy_t)role, 592*0f4c859eSApple OSS Distributions &count, 593*0f4c859eSApple OSS Distributions &get_default), 594*0f4c859eSApple OSS Distributions NULL); 595*0f4c859eSApple OSS Distributions 596*0f4c859eSApple OSS Distributions ret = kill(pid, SIGTERM); 597*0f4c859eSApple OSS Distributions T_QUIET; T_ASSERT_POSIX_ZERO(ret, "killing sleep"); 598*0f4c859eSApple OSS Distributions } 599*0f4c859eSApple OSS Distributions 600*0f4c859eSApple OSS Distributions #endif /* UNENTITLED */ 601