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