blob: f86adfa257b39e55fe1ee98ec49fda58b454d751 [file] [log] [blame]
Fei Jiec3fb92c2016-03-15 16:38:17 +08001#include "tests.h"
2#include <sys/syscall.h>
3
4#if defined __NR_sched_getscheduler && defined __NR_sched_setscheduler
5
Fei Jiec3fb92c2016-03-15 16:38:17 +08006# include <sched.h>
7# include <stdio.h>
8# include <unistd.h>
9
10int
11main(void)
12{
13 struct sched_param *const param = tail_alloc(sizeof(struct sched_param));
Dmitry V. Levin06c28282016-04-21 21:18:14 +000014 long rc = syscall(__NR_sched_getscheduler, 0);
Fei Jiec3fb92c2016-03-15 16:38:17 +080015 const char *scheduler;
16 switch (rc) {
17 case SCHED_FIFO:
18 scheduler = "SCHED_FIFO";
19 break;
20 case SCHED_RR:
21 scheduler = "SCHED_RR";
22 break;
23# ifdef SCHED_BATCH
24 case SCHED_BATCH:
25 scheduler = "SCHED_BATCH";
26 break;
27# endif
28# ifdef SCHED_IDLE
29 case SCHED_IDLE:
30 scheduler = "SCHED_IDLE";
31 break;
32# endif
33# ifdef SCHED_ISO
34 case SCHED_ISO:
35 scheduler = "SCHED_ISO";
36 break;
37# endif
38# ifdef SCHED_DEADLINE
39 case SCHED_DEADLINE:
40 scheduler = "SCHED_DEADLINE";
41 break;
42# endif
43 default:
44 scheduler = "SCHED_OTHER";
45 }
Dmitry V. Levin06c28282016-04-21 21:18:14 +000046 printf("sched_getscheduler(0) = %ld (%s)\n",
Fei Jiec3fb92c2016-03-15 16:38:17 +080047 rc, scheduler);
48
49 param->sched_priority = -1;
50 rc = syscall(__NR_sched_setscheduler, 0, SCHED_FIFO, param);
Dmitry V. Levin06c28282016-04-21 21:18:14 +000051 printf("sched_setscheduler(0, SCHED_FIFO, [%d]) = %ld %s (%m)\n",
52 param->sched_priority, rc, errno2name());
Fei Jiec3fb92c2016-03-15 16:38:17 +080053
54 puts("+++ exited with 0 +++");
55 return 0;
56}
57
58#else
59
60SKIP_MAIN_UNDEFINED("__NR_sched_getscheduler && __NR_sched_setscheduler")
61
62#endif