1*cf84ac9aSAndroid Build Coastguard Worker #include "tests.h"
2*cf84ac9aSAndroid Build Coastguard Worker #include <asm/unistd.h>
3*cf84ac9aSAndroid Build Coastguard Worker
4*cf84ac9aSAndroid Build Coastguard Worker #if defined __NR_sched_getscheduler && defined __NR_sched_setscheduler
5*cf84ac9aSAndroid Build Coastguard Worker
6*cf84ac9aSAndroid Build Coastguard Worker # include <sched.h>
7*cf84ac9aSAndroid Build Coastguard Worker # include <stdio.h>
8*cf84ac9aSAndroid Build Coastguard Worker # include <unistd.h>
9*cf84ac9aSAndroid Build Coastguard Worker
10*cf84ac9aSAndroid Build Coastguard Worker int
main(void)11*cf84ac9aSAndroid Build Coastguard Worker main(void)
12*cf84ac9aSAndroid Build Coastguard Worker {
13*cf84ac9aSAndroid Build Coastguard Worker TAIL_ALLOC_OBJECT_CONST_PTR(struct sched_param, param);
14*cf84ac9aSAndroid Build Coastguard Worker long rc = syscall(__NR_sched_getscheduler, 0);
15*cf84ac9aSAndroid Build Coastguard Worker const char *scheduler;
16*cf84ac9aSAndroid Build Coastguard Worker switch (rc) {
17*cf84ac9aSAndroid Build Coastguard Worker case SCHED_FIFO:
18*cf84ac9aSAndroid Build Coastguard Worker scheduler = "SCHED_FIFO";
19*cf84ac9aSAndroid Build Coastguard Worker break;
20*cf84ac9aSAndroid Build Coastguard Worker case SCHED_RR:
21*cf84ac9aSAndroid Build Coastguard Worker scheduler = "SCHED_RR";
22*cf84ac9aSAndroid Build Coastguard Worker break;
23*cf84ac9aSAndroid Build Coastguard Worker # ifdef SCHED_BATCH
24*cf84ac9aSAndroid Build Coastguard Worker case SCHED_BATCH:
25*cf84ac9aSAndroid Build Coastguard Worker scheduler = "SCHED_BATCH";
26*cf84ac9aSAndroid Build Coastguard Worker break;
27*cf84ac9aSAndroid Build Coastguard Worker # endif
28*cf84ac9aSAndroid Build Coastguard Worker # ifdef SCHED_IDLE
29*cf84ac9aSAndroid Build Coastguard Worker case SCHED_IDLE:
30*cf84ac9aSAndroid Build Coastguard Worker scheduler = "SCHED_IDLE";
31*cf84ac9aSAndroid Build Coastguard Worker break;
32*cf84ac9aSAndroid Build Coastguard Worker # endif
33*cf84ac9aSAndroid Build Coastguard Worker # ifdef SCHED_ISO
34*cf84ac9aSAndroid Build Coastguard Worker case SCHED_ISO:
35*cf84ac9aSAndroid Build Coastguard Worker scheduler = "SCHED_ISO";
36*cf84ac9aSAndroid Build Coastguard Worker break;
37*cf84ac9aSAndroid Build Coastguard Worker # endif
38*cf84ac9aSAndroid Build Coastguard Worker # ifdef SCHED_DEADLINE
39*cf84ac9aSAndroid Build Coastguard Worker case SCHED_DEADLINE:
40*cf84ac9aSAndroid Build Coastguard Worker scheduler = "SCHED_DEADLINE";
41*cf84ac9aSAndroid Build Coastguard Worker break;
42*cf84ac9aSAndroid Build Coastguard Worker # endif
43*cf84ac9aSAndroid Build Coastguard Worker default:
44*cf84ac9aSAndroid Build Coastguard Worker scheduler = "SCHED_OTHER";
45*cf84ac9aSAndroid Build Coastguard Worker }
46*cf84ac9aSAndroid Build Coastguard Worker printf("sched_getscheduler(0) = %ld (%s)\n",
47*cf84ac9aSAndroid Build Coastguard Worker rc, scheduler);
48*cf84ac9aSAndroid Build Coastguard Worker
49*cf84ac9aSAndroid Build Coastguard Worker rc = syscall(__NR_sched_getscheduler, -1);
50*cf84ac9aSAndroid Build Coastguard Worker printf("sched_getscheduler(-1) = %s\n", sprintrc(rc));
51*cf84ac9aSAndroid Build Coastguard Worker
52*cf84ac9aSAndroid Build Coastguard Worker param->sched_priority = -1;
53*cf84ac9aSAndroid Build Coastguard Worker
54*cf84ac9aSAndroid Build Coastguard Worker rc = syscall(__NR_sched_setscheduler, 0, SCHED_FIFO, NULL);
55*cf84ac9aSAndroid Build Coastguard Worker printf("sched_setscheduler(0, SCHED_FIFO, NULL) = %s\n", sprintrc(rc));
56*cf84ac9aSAndroid Build Coastguard Worker
57*cf84ac9aSAndroid Build Coastguard Worker rc = syscall(__NR_sched_setscheduler, 0, SCHED_FIFO, param + 1);
58*cf84ac9aSAndroid Build Coastguard Worker printf("sched_setscheduler(0, SCHED_FIFO, %p) = %s\n", param + 1,
59*cf84ac9aSAndroid Build Coastguard Worker sprintrc(rc));
60*cf84ac9aSAndroid Build Coastguard Worker
61*cf84ac9aSAndroid Build Coastguard Worker rc = syscall(__NR_sched_setscheduler, 0, 0xfaceda7a, param);
62*cf84ac9aSAndroid Build Coastguard Worker printf("sched_setscheduler(0, %#x /* SCHED_??? */, [%d]) = %s\n",
63*cf84ac9aSAndroid Build Coastguard Worker 0xfaceda7a, param->sched_priority, sprintrc(rc));
64*cf84ac9aSAndroid Build Coastguard Worker
65*cf84ac9aSAndroid Build Coastguard Worker rc = syscall(__NR_sched_setscheduler, -1, SCHED_FIFO, param);
66*cf84ac9aSAndroid Build Coastguard Worker printf("sched_setscheduler(-1, SCHED_FIFO, [%d]) = %s\n",
67*cf84ac9aSAndroid Build Coastguard Worker param->sched_priority, sprintrc(rc));
68*cf84ac9aSAndroid Build Coastguard Worker
69*cf84ac9aSAndroid Build Coastguard Worker rc = syscall(__NR_sched_setscheduler, 0, SCHED_FIFO, param);
70*cf84ac9aSAndroid Build Coastguard Worker printf("sched_setscheduler(0, SCHED_FIFO, [%d]) = %s\n",
71*cf84ac9aSAndroid Build Coastguard Worker param->sched_priority, sprintrc(rc));
72*cf84ac9aSAndroid Build Coastguard Worker
73*cf84ac9aSAndroid Build Coastguard Worker puts("+++ exited with 0 +++");
74*cf84ac9aSAndroid Build Coastguard Worker return 0;
75*cf84ac9aSAndroid Build Coastguard Worker }
76*cf84ac9aSAndroid Build Coastguard Worker
77*cf84ac9aSAndroid Build Coastguard Worker #else
78*cf84ac9aSAndroid Build Coastguard Worker
79*cf84ac9aSAndroid Build Coastguard Worker SKIP_MAIN_UNDEFINED("__NR_sched_getscheduler && __NR_sched_setscheduler")
80*cf84ac9aSAndroid Build Coastguard Worker
81*cf84ac9aSAndroid Build Coastguard Worker #endif
82