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