1*cf84ac9aSAndroid Build Coastguard Worker /*
2*cf84ac9aSAndroid Build Coastguard Worker * Copyright (c) 2015-2017 Dmitry V. Levin <[email protected]>
3*cf84ac9aSAndroid Build Coastguard Worker * Copyright (c) 2015-2018 The strace developers.
4*cf84ac9aSAndroid Build Coastguard Worker * All rights reserved.
5*cf84ac9aSAndroid Build Coastguard Worker *
6*cf84ac9aSAndroid Build Coastguard Worker * Redistribution and use in source and binary forms, with or without
7*cf84ac9aSAndroid Build Coastguard Worker * modification, are permitted provided that the following conditions
8*cf84ac9aSAndroid Build Coastguard Worker * are met:
9*cf84ac9aSAndroid Build Coastguard Worker * 1. Redistributions of source code must retain the above copyright
10*cf84ac9aSAndroid Build Coastguard Worker * notice, this list of conditions and the following disclaimer.
11*cf84ac9aSAndroid Build Coastguard Worker * 2. Redistributions in binary form must reproduce the above copyright
12*cf84ac9aSAndroid Build Coastguard Worker * notice, this list of conditions and the following disclaimer in the
13*cf84ac9aSAndroid Build Coastguard Worker * documentation and/or other materials provided with the distribution.
14*cf84ac9aSAndroid Build Coastguard Worker * 3. The name of the author may not be used to endorse or promote products
15*cf84ac9aSAndroid Build Coastguard Worker * derived from this software without specific prior written permission.
16*cf84ac9aSAndroid Build Coastguard Worker *
17*cf84ac9aSAndroid Build Coastguard Worker * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18*cf84ac9aSAndroid Build Coastguard Worker * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19*cf84ac9aSAndroid Build Coastguard Worker * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20*cf84ac9aSAndroid Build Coastguard Worker * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21*cf84ac9aSAndroid Build Coastguard Worker * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22*cf84ac9aSAndroid Build Coastguard Worker * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23*cf84ac9aSAndroid Build Coastguard Worker * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24*cf84ac9aSAndroid Build Coastguard Worker * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25*cf84ac9aSAndroid Build Coastguard Worker * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26*cf84ac9aSAndroid Build Coastguard Worker * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27*cf84ac9aSAndroid Build Coastguard Worker */
28*cf84ac9aSAndroid Build Coastguard Worker
29*cf84ac9aSAndroid Build Coastguard Worker #include "tests.h"
30*cf84ac9aSAndroid Build Coastguard Worker #include <asm/unistd.h>
31*cf84ac9aSAndroid Build Coastguard Worker
32*cf84ac9aSAndroid Build Coastguard Worker #if defined __NR_sched_getattr && defined __NR_sched_setattr
33*cf84ac9aSAndroid Build Coastguard Worker
34*cf84ac9aSAndroid Build Coastguard Worker # include <inttypes.h>
35*cf84ac9aSAndroid Build Coastguard Worker # include <stdio.h>
36*cf84ac9aSAndroid Build Coastguard Worker # include <sched.h>
37*cf84ac9aSAndroid Build Coastguard Worker # include <unistd.h>
38*cf84ac9aSAndroid Build Coastguard Worker # include "sched_attr.h"
39*cf84ac9aSAndroid Build Coastguard Worker # include "xlat.h"
40*cf84ac9aSAndroid Build Coastguard Worker # include "xlat/schedulers.h"
41*cf84ac9aSAndroid Build Coastguard Worker
42*cf84ac9aSAndroid Build Coastguard Worker static const char *errstr;
43*cf84ac9aSAndroid Build Coastguard Worker
44*cf84ac9aSAndroid Build Coastguard Worker static long
sys_sched_getattr(kernel_ulong_t pid,kernel_ulong_t attr,kernel_ulong_t size,kernel_ulong_t flags)45*cf84ac9aSAndroid Build Coastguard Worker sys_sched_getattr(kernel_ulong_t pid, kernel_ulong_t attr,
46*cf84ac9aSAndroid Build Coastguard Worker kernel_ulong_t size, kernel_ulong_t flags)
47*cf84ac9aSAndroid Build Coastguard Worker {
48*cf84ac9aSAndroid Build Coastguard Worker long rc = syscall(__NR_sched_getattr, pid, attr, size, flags);
49*cf84ac9aSAndroid Build Coastguard Worker errstr = sprintrc(rc);
50*cf84ac9aSAndroid Build Coastguard Worker return rc;
51*cf84ac9aSAndroid Build Coastguard Worker }
52*cf84ac9aSAndroid Build Coastguard Worker
53*cf84ac9aSAndroid Build Coastguard Worker static long
sys_sched_setattr(kernel_ulong_t pid,kernel_ulong_t attr,kernel_ulong_t flags)54*cf84ac9aSAndroid Build Coastguard Worker sys_sched_setattr(kernel_ulong_t pid, kernel_ulong_t attr, kernel_ulong_t flags)
55*cf84ac9aSAndroid Build Coastguard Worker {
56*cf84ac9aSAndroid Build Coastguard Worker long rc = syscall(__NR_sched_setattr, pid, attr, flags);
57*cf84ac9aSAndroid Build Coastguard Worker errstr = sprintrc(rc);
58*cf84ac9aSAndroid Build Coastguard Worker return rc;
59*cf84ac9aSAndroid Build Coastguard Worker }
60*cf84ac9aSAndroid Build Coastguard Worker
61*cf84ac9aSAndroid Build Coastguard Worker int
main(void)62*cf84ac9aSAndroid Build Coastguard Worker main(void)
63*cf84ac9aSAndroid Build Coastguard Worker {
64*cf84ac9aSAndroid Build Coastguard Worker static const kernel_ulong_t bogus_pid =
65*cf84ac9aSAndroid Build Coastguard Worker (kernel_ulong_t) 0xdefacedfacefeedULL;
66*cf84ac9aSAndroid Build Coastguard Worker static const kernel_ulong_t bogus_size =
67*cf84ac9aSAndroid Build Coastguard Worker (kernel_ulong_t) 0xdefacedcafef00dULL;
68*cf84ac9aSAndroid Build Coastguard Worker static const kernel_ulong_t bogus_flags =
69*cf84ac9aSAndroid Build Coastguard Worker (kernel_ulong_t) 0xdefaceddeadc0deULL;
70*cf84ac9aSAndroid Build Coastguard Worker
71*cf84ac9aSAndroid Build Coastguard Worker TAIL_ALLOC_OBJECT_CONST_PTR(struct sched_attr, attr);
72*cf84ac9aSAndroid Build Coastguard Worker TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, psize);
73*cf84ac9aSAndroid Build Coastguard Worker void *const efault = attr + 1;
74*cf84ac9aSAndroid Build Coastguard Worker
75*cf84ac9aSAndroid Build Coastguard Worker sys_sched_getattr(0, 0, 0, 0);
76*cf84ac9aSAndroid Build Coastguard Worker printf("sched_getattr(0, NULL, 0, 0) = %s\n", errstr);
77*cf84ac9aSAndroid Build Coastguard Worker
78*cf84ac9aSAndroid Build Coastguard Worker sys_sched_getattr(0, (unsigned long) attr, 0, 0);
79*cf84ac9aSAndroid Build Coastguard Worker printf("sched_getattr(0, %p, 0, 0) = %s\n", attr, errstr);
80*cf84ac9aSAndroid Build Coastguard Worker
81*cf84ac9aSAndroid Build Coastguard Worker sys_sched_getattr(bogus_pid, 0, 0, 0);
82*cf84ac9aSAndroid Build Coastguard Worker printf("sched_getattr(%d, NULL, 0, 0) = %s\n", (int) bogus_pid, errstr);
83*cf84ac9aSAndroid Build Coastguard Worker
84*cf84ac9aSAndroid Build Coastguard Worker sys_sched_getattr(-1U, (unsigned long) attr, bogus_size, bogus_flags);
85*cf84ac9aSAndroid Build Coastguard Worker printf("sched_getattr(-1, %p, %s%u, %u) = %s\n",
86*cf84ac9aSAndroid Build Coastguard Worker attr,
87*cf84ac9aSAndroid Build Coastguard Worker # if defined __arm64__ || defined __aarch64__
88*cf84ac9aSAndroid Build Coastguard Worker "0xdefaced<<32|",
89*cf84ac9aSAndroid Build Coastguard Worker # else
90*cf84ac9aSAndroid Build Coastguard Worker "",
91*cf84ac9aSAndroid Build Coastguard Worker # endif
92*cf84ac9aSAndroid Build Coastguard Worker (unsigned) bogus_size, (unsigned) bogus_flags, errstr);
93*cf84ac9aSAndroid Build Coastguard Worker
94*cf84ac9aSAndroid Build Coastguard Worker sys_sched_getattr(0, (unsigned long) efault, sizeof(*attr), 0);
95*cf84ac9aSAndroid Build Coastguard Worker printf("sched_getattr(0, %p, %u, 0) = %s\n",
96*cf84ac9aSAndroid Build Coastguard Worker efault, (unsigned) sizeof(*attr), errstr);
97*cf84ac9aSAndroid Build Coastguard Worker
98*cf84ac9aSAndroid Build Coastguard Worker if (sys_sched_getattr(0, (unsigned long) attr, sizeof(*attr), 0))
99*cf84ac9aSAndroid Build Coastguard Worker perror_msg_and_skip("sched_getattr");
100*cf84ac9aSAndroid Build Coastguard Worker printf("sched_getattr(0, {size=%u, sched_policy=", attr->size);
101*cf84ac9aSAndroid Build Coastguard Worker printxval(schedulers, attr->sched_policy, NULL);
102*cf84ac9aSAndroid Build Coastguard Worker printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
103*cf84ac9aSAndroid Build Coastguard Worker ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
104*cf84ac9aSAndroid Build Coastguard Worker ", sched_period=%" PRIu64 "}, %u, 0) = 0\n",
105*cf84ac9aSAndroid Build Coastguard Worker attr->sched_flags ? "SCHED_FLAG_RESET_ON_FORK" : "0",
106*cf84ac9aSAndroid Build Coastguard Worker attr->sched_nice,
107*cf84ac9aSAndroid Build Coastguard Worker attr->sched_priority,
108*cf84ac9aSAndroid Build Coastguard Worker attr->sched_runtime,
109*cf84ac9aSAndroid Build Coastguard Worker attr->sched_deadline,
110*cf84ac9aSAndroid Build Coastguard Worker attr->sched_period,
111*cf84ac9aSAndroid Build Coastguard Worker (unsigned) sizeof(*attr));
112*cf84ac9aSAndroid Build Coastguard Worker
113*cf84ac9aSAndroid Build Coastguard Worker # if defined __arm64__ || defined __aarch64__
114*cf84ac9aSAndroid Build Coastguard Worker long rc =
115*cf84ac9aSAndroid Build Coastguard Worker # endif
116*cf84ac9aSAndroid Build Coastguard Worker sys_sched_getattr(F8ILL_KULONG_MASK, (unsigned long) attr,
117*cf84ac9aSAndroid Build Coastguard Worker F8ILL_KULONG_MASK | sizeof(*attr), F8ILL_KULONG_MASK);
118*cf84ac9aSAndroid Build Coastguard Worker # if defined __arm64__ || defined __aarch64__
119*cf84ac9aSAndroid Build Coastguard Worker if (rc) {
120*cf84ac9aSAndroid Build Coastguard Worker printf("sched_getattr(0, %p, 0xffffffff<<32|%u, 0) = %s\n",
121*cf84ac9aSAndroid Build Coastguard Worker attr, (unsigned) sizeof(*attr), errstr);
122*cf84ac9aSAndroid Build Coastguard Worker } else
123*cf84ac9aSAndroid Build Coastguard Worker # endif
124*cf84ac9aSAndroid Build Coastguard Worker {
125*cf84ac9aSAndroid Build Coastguard Worker printf("sched_getattr(0, {size=%u, sched_policy=", attr->size);
126*cf84ac9aSAndroid Build Coastguard Worker printxval(schedulers, attr->sched_policy, NULL);
127*cf84ac9aSAndroid Build Coastguard Worker printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
128*cf84ac9aSAndroid Build Coastguard Worker ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
129*cf84ac9aSAndroid Build Coastguard Worker ", sched_period=%" PRIu64 "}, %u, 0) = 0\n",
130*cf84ac9aSAndroid Build Coastguard Worker attr->sched_flags ? "SCHED_FLAG_RESET_ON_FORK" : "0",
131*cf84ac9aSAndroid Build Coastguard Worker attr->sched_nice,
132*cf84ac9aSAndroid Build Coastguard Worker attr->sched_priority,
133*cf84ac9aSAndroid Build Coastguard Worker attr->sched_runtime,
134*cf84ac9aSAndroid Build Coastguard Worker attr->sched_deadline,
135*cf84ac9aSAndroid Build Coastguard Worker attr->sched_period,
136*cf84ac9aSAndroid Build Coastguard Worker (unsigned) sizeof(*attr));
137*cf84ac9aSAndroid Build Coastguard Worker }
138*cf84ac9aSAndroid Build Coastguard Worker
139*cf84ac9aSAndroid Build Coastguard Worker sys_sched_setattr(bogus_pid, 0, 0);
140*cf84ac9aSAndroid Build Coastguard Worker printf("sched_setattr(%d, NULL, 0) = %s\n", (int) bogus_pid, errstr);
141*cf84ac9aSAndroid Build Coastguard Worker
142*cf84ac9aSAndroid Build Coastguard Worker attr->sched_flags |= 1;
143*cf84ac9aSAndroid Build Coastguard Worker
144*cf84ac9aSAndroid Build Coastguard Worker if (sys_sched_setattr(0, (unsigned long) attr, 0))
145*cf84ac9aSAndroid Build Coastguard Worker perror_msg_and_skip("sched_setattr");
146*cf84ac9aSAndroid Build Coastguard Worker printf("sched_setattr(0, {size=%u, sched_policy=", attr->size);
147*cf84ac9aSAndroid Build Coastguard Worker printxval(schedulers, attr->sched_policy, NULL);
148*cf84ac9aSAndroid Build Coastguard Worker printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
149*cf84ac9aSAndroid Build Coastguard Worker ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
150*cf84ac9aSAndroid Build Coastguard Worker ", sched_period=%" PRIu64 "}, 0) = 0\n",
151*cf84ac9aSAndroid Build Coastguard Worker "SCHED_FLAG_RESET_ON_FORK",
152*cf84ac9aSAndroid Build Coastguard Worker attr->sched_nice,
153*cf84ac9aSAndroid Build Coastguard Worker attr->sched_priority,
154*cf84ac9aSAndroid Build Coastguard Worker attr->sched_runtime,
155*cf84ac9aSAndroid Build Coastguard Worker attr->sched_deadline,
156*cf84ac9aSAndroid Build Coastguard Worker attr->sched_period);
157*cf84ac9aSAndroid Build Coastguard Worker
158*cf84ac9aSAndroid Build Coastguard Worker sys_sched_setattr(F8ILL_KULONG_MASK, (unsigned long) attr,
159*cf84ac9aSAndroid Build Coastguard Worker F8ILL_KULONG_MASK);
160*cf84ac9aSAndroid Build Coastguard Worker printf("sched_setattr(0, {size=%u, sched_policy=", attr->size);
161*cf84ac9aSAndroid Build Coastguard Worker printxval(schedulers, attr->sched_policy, NULL);
162*cf84ac9aSAndroid Build Coastguard Worker printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
163*cf84ac9aSAndroid Build Coastguard Worker ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
164*cf84ac9aSAndroid Build Coastguard Worker ", sched_period=%" PRIu64 "}, 0) = 0\n",
165*cf84ac9aSAndroid Build Coastguard Worker "SCHED_FLAG_RESET_ON_FORK",
166*cf84ac9aSAndroid Build Coastguard Worker attr->sched_nice,
167*cf84ac9aSAndroid Build Coastguard Worker attr->sched_priority,
168*cf84ac9aSAndroid Build Coastguard Worker attr->sched_runtime,
169*cf84ac9aSAndroid Build Coastguard Worker attr->sched_deadline,
170*cf84ac9aSAndroid Build Coastguard Worker attr->sched_period);
171*cf84ac9aSAndroid Build Coastguard Worker
172*cf84ac9aSAndroid Build Coastguard Worker *psize = attr->size;
173*cf84ac9aSAndroid Build Coastguard Worker
174*cf84ac9aSAndroid Build Coastguard Worker sys_sched_setattr(0, (unsigned long) psize, 0);
175*cf84ac9aSAndroid Build Coastguard Worker printf("sched_setattr(0, %p, 0) = %s\n", psize, errstr);
176*cf84ac9aSAndroid Build Coastguard Worker
177*cf84ac9aSAndroid Build Coastguard Worker attr->size = 0;
178*cf84ac9aSAndroid Build Coastguard Worker
179*cf84ac9aSAndroid Build Coastguard Worker sys_sched_setattr(0, (unsigned long) attr, 0);
180*cf84ac9aSAndroid Build Coastguard Worker printf("sched_setattr(0, {size=%u, sched_policy=", attr->size);
181*cf84ac9aSAndroid Build Coastguard Worker printxval(schedulers, attr->sched_policy, NULL);
182*cf84ac9aSAndroid Build Coastguard Worker printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
183*cf84ac9aSAndroid Build Coastguard Worker ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
184*cf84ac9aSAndroid Build Coastguard Worker ", sched_period=%" PRIu64 "}, 0) = 0\n",
185*cf84ac9aSAndroid Build Coastguard Worker "SCHED_FLAG_RESET_ON_FORK",
186*cf84ac9aSAndroid Build Coastguard Worker attr->sched_nice,
187*cf84ac9aSAndroid Build Coastguard Worker attr->sched_priority,
188*cf84ac9aSAndroid Build Coastguard Worker attr->sched_runtime,
189*cf84ac9aSAndroid Build Coastguard Worker attr->sched_deadline,
190*cf84ac9aSAndroid Build Coastguard Worker attr->sched_period);
191*cf84ac9aSAndroid Build Coastguard Worker
192*cf84ac9aSAndroid Build Coastguard Worker attr->size = 1;
193*cf84ac9aSAndroid Build Coastguard Worker
194*cf84ac9aSAndroid Build Coastguard Worker sys_sched_setattr(0, (unsigned long) attr, 0);
195*cf84ac9aSAndroid Build Coastguard Worker printf("sched_setattr(0, {size=%u} => {size=%u}, 0) = %s\n",
196*cf84ac9aSAndroid Build Coastguard Worker 1, attr->size, errstr);
197*cf84ac9aSAndroid Build Coastguard Worker
198*cf84ac9aSAndroid Build Coastguard Worker attr->size = SCHED_ATTR_MIN_SIZE - 1;
199*cf84ac9aSAndroid Build Coastguard Worker
200*cf84ac9aSAndroid Build Coastguard Worker sys_sched_setattr(0, (unsigned long) attr, 0);
201*cf84ac9aSAndroid Build Coastguard Worker printf("sched_setattr(0, {size=%u} => {size=%u}, 0) = %s\n",
202*cf84ac9aSAndroid Build Coastguard Worker SCHED_ATTR_MIN_SIZE - 1, attr->size, errstr);
203*cf84ac9aSAndroid Build Coastguard Worker
204*cf84ac9aSAndroid Build Coastguard Worker attr->size = 0x90807060;
205*cf84ac9aSAndroid Build Coastguard Worker attr->sched_policy = 0xca7faced;
206*cf84ac9aSAndroid Build Coastguard Worker attr->sched_flags = 0xbadc0ded1057da78ULL;
207*cf84ac9aSAndroid Build Coastguard Worker attr->sched_nice = 0xafbfcfdf;
208*cf84ac9aSAndroid Build Coastguard Worker attr->sched_priority = 0xb8c8d8e8;
209*cf84ac9aSAndroid Build Coastguard Worker attr->sched_runtime = 0xbadcaffedeadf157ULL;
210*cf84ac9aSAndroid Build Coastguard Worker attr->sched_deadline = 0xc0de70a57badac75ULL;
211*cf84ac9aSAndroid Build Coastguard Worker attr->sched_period = 0xded1ca7edda7aca7ULL;
212*cf84ac9aSAndroid Build Coastguard Worker
213*cf84ac9aSAndroid Build Coastguard Worker sys_sched_setattr(bogus_pid, (unsigned long) attr, bogus_flags);
214*cf84ac9aSAndroid Build Coastguard Worker printf("sched_setattr(%d, {size=%u, sched_policy=%#x /* SCHED_??? */, "
215*cf84ac9aSAndroid Build Coastguard Worker "sched_flags=%#" PRIx64 " /* SCHED_FLAG_??? */, "
216*cf84ac9aSAndroid Build Coastguard Worker "sched_nice=%d, sched_priority=%u, sched_runtime=%" PRIu64 ", "
217*cf84ac9aSAndroid Build Coastguard Worker "sched_deadline=%" PRIu64 ", sched_period=%" PRIu64 ", ...}, %u)"
218*cf84ac9aSAndroid Build Coastguard Worker " = %s\n",
219*cf84ac9aSAndroid Build Coastguard Worker (int) bogus_pid,
220*cf84ac9aSAndroid Build Coastguard Worker attr->size,
221*cf84ac9aSAndroid Build Coastguard Worker attr->sched_policy,
222*cf84ac9aSAndroid Build Coastguard Worker attr->sched_flags,
223*cf84ac9aSAndroid Build Coastguard Worker attr->sched_nice,
224*cf84ac9aSAndroid Build Coastguard Worker attr->sched_priority,
225*cf84ac9aSAndroid Build Coastguard Worker attr->sched_runtime,
226*cf84ac9aSAndroid Build Coastguard Worker attr->sched_deadline,
227*cf84ac9aSAndroid Build Coastguard Worker attr->sched_period,
228*cf84ac9aSAndroid Build Coastguard Worker (unsigned) bogus_flags, errstr);
229*cf84ac9aSAndroid Build Coastguard Worker
230*cf84ac9aSAndroid Build Coastguard Worker if (F8ILL_KULONG_SUPPORTED) {
231*cf84ac9aSAndroid Build Coastguard Worker const kernel_ulong_t ill = f8ill_ptr_to_kulong(attr);
232*cf84ac9aSAndroid Build Coastguard Worker
233*cf84ac9aSAndroid Build Coastguard Worker sys_sched_getattr(0, ill, sizeof(*attr), 0);
234*cf84ac9aSAndroid Build Coastguard Worker printf("sched_getattr(0, %#llx, %u, 0) = %s\n",
235*cf84ac9aSAndroid Build Coastguard Worker (unsigned long long) ill, (unsigned) sizeof(*attr),
236*cf84ac9aSAndroid Build Coastguard Worker errstr);
237*cf84ac9aSAndroid Build Coastguard Worker
238*cf84ac9aSAndroid Build Coastguard Worker sys_sched_setattr(0, ill, 0);
239*cf84ac9aSAndroid Build Coastguard Worker printf("sched_setattr(0, %#llx, 0) = %s\n",
240*cf84ac9aSAndroid Build Coastguard Worker (unsigned long long) ill, errstr);
241*cf84ac9aSAndroid Build Coastguard Worker }
242*cf84ac9aSAndroid Build Coastguard Worker
243*cf84ac9aSAndroid Build Coastguard Worker
244*cf84ac9aSAndroid Build Coastguard Worker attr->size = 0x90807060;
245*cf84ac9aSAndroid Build Coastguard Worker attr->sched_policy = 0xca7faced;
246*cf84ac9aSAndroid Build Coastguard Worker attr->sched_flags = 0xfULL;
247*cf84ac9aSAndroid Build Coastguard Worker attr->sched_nice = 0xafbfcfdf;
248*cf84ac9aSAndroid Build Coastguard Worker attr->sched_priority = 0xb8c8d8e8;
249*cf84ac9aSAndroid Build Coastguard Worker attr->sched_runtime = 0xbadcaffedeadf157ULL;
250*cf84ac9aSAndroid Build Coastguard Worker attr->sched_deadline = 0xc0de70a57badac75ULL;
251*cf84ac9aSAndroid Build Coastguard Worker attr->sched_period = 0xded1ca7edda7aca7ULL;
252*cf84ac9aSAndroid Build Coastguard Worker
253*cf84ac9aSAndroid Build Coastguard Worker sys_sched_setattr(bogus_pid, (unsigned long) attr, bogus_flags);
254*cf84ac9aSAndroid Build Coastguard Worker printf("sched_setattr(%d, {size=%u, sched_policy=%#x /* SCHED_??? */, "
255*cf84ac9aSAndroid Build Coastguard Worker "sched_flags=SCHED_FLAG_RESET_ON_FORK|SCHED_FLAG_RECLAIM|"
256*cf84ac9aSAndroid Build Coastguard Worker "SCHED_FLAG_DL_OVERRUN|0x8, "
257*cf84ac9aSAndroid Build Coastguard Worker "sched_nice=%d, sched_priority=%u, sched_runtime=%" PRIu64 ", "
258*cf84ac9aSAndroid Build Coastguard Worker "sched_deadline=%" PRIu64 ", sched_period=%" PRIu64 ", ...}, %u)"
259*cf84ac9aSAndroid Build Coastguard Worker " = %s\n",
260*cf84ac9aSAndroid Build Coastguard Worker (int) bogus_pid,
261*cf84ac9aSAndroid Build Coastguard Worker attr->size,
262*cf84ac9aSAndroid Build Coastguard Worker attr->sched_policy,
263*cf84ac9aSAndroid Build Coastguard Worker attr->sched_nice,
264*cf84ac9aSAndroid Build Coastguard Worker attr->sched_priority,
265*cf84ac9aSAndroid Build Coastguard Worker attr->sched_runtime,
266*cf84ac9aSAndroid Build Coastguard Worker attr->sched_deadline,
267*cf84ac9aSAndroid Build Coastguard Worker attr->sched_period,
268*cf84ac9aSAndroid Build Coastguard Worker (unsigned) bogus_flags, errstr);
269*cf84ac9aSAndroid Build Coastguard Worker
270*cf84ac9aSAndroid Build Coastguard Worker if (F8ILL_KULONG_SUPPORTED) {
271*cf84ac9aSAndroid Build Coastguard Worker const kernel_ulong_t ill = f8ill_ptr_to_kulong(attr);
272*cf84ac9aSAndroid Build Coastguard Worker
273*cf84ac9aSAndroid Build Coastguard Worker sys_sched_getattr(0, ill, sizeof(*attr), 0);
274*cf84ac9aSAndroid Build Coastguard Worker printf("sched_getattr(0, %#llx, %u, 0) = %s\n",
275*cf84ac9aSAndroid Build Coastguard Worker (unsigned long long) ill, (unsigned) sizeof(*attr),
276*cf84ac9aSAndroid Build Coastguard Worker errstr);
277*cf84ac9aSAndroid Build Coastguard Worker
278*cf84ac9aSAndroid Build Coastguard Worker sys_sched_setattr(0, ill, 0);
279*cf84ac9aSAndroid Build Coastguard Worker printf("sched_setattr(0, %#llx, 0) = %s\n",
280*cf84ac9aSAndroid Build Coastguard Worker (unsigned long long) ill, errstr);
281*cf84ac9aSAndroid Build Coastguard Worker }
282*cf84ac9aSAndroid Build Coastguard Worker
283*cf84ac9aSAndroid Build Coastguard Worker puts("+++ exited with 0 +++");
284*cf84ac9aSAndroid Build Coastguard Worker return 0;
285*cf84ac9aSAndroid Build Coastguard Worker }
286*cf84ac9aSAndroid Build Coastguard Worker
287*cf84ac9aSAndroid Build Coastguard Worker #else
288*cf84ac9aSAndroid Build Coastguard Worker
289*cf84ac9aSAndroid Build Coastguard Worker SKIP_MAIN_UNDEFINED("__NR_sched_getattr && __NR_sched_setattr")
290*cf84ac9aSAndroid Build Coastguard Worker
291*cf84ac9aSAndroid Build Coastguard Worker #endif
292