|  | #include "tests.h" | 
|  | #include <asm/unistd.h> | 
|  |  | 
|  | #if defined __NR_sched_getscheduler && defined __NR_sched_setscheduler | 
|  |  | 
|  | # include <sched.h> | 
|  | # include <stdio.h> | 
|  | # include <unistd.h> | 
|  |  | 
|  | int | 
|  | main(void) | 
|  | { | 
|  | TAIL_ALLOC_OBJECT_CONST_PTR(struct sched_param, param); | 
|  | long rc = syscall(__NR_sched_getscheduler, 0); | 
|  | const char *scheduler; | 
|  | switch (rc) { | 
|  | case SCHED_FIFO: | 
|  | scheduler = "SCHED_FIFO"; | 
|  | break; | 
|  | case SCHED_RR: | 
|  | scheduler = "SCHED_RR"; | 
|  | break; | 
|  | # ifdef SCHED_BATCH | 
|  | case SCHED_BATCH: | 
|  | scheduler = "SCHED_BATCH"; | 
|  | break; | 
|  | # endif | 
|  | # ifdef SCHED_IDLE | 
|  | case SCHED_IDLE: | 
|  | scheduler = "SCHED_IDLE"; | 
|  | break; | 
|  | # endif | 
|  | # ifdef SCHED_ISO | 
|  | case SCHED_ISO: | 
|  | scheduler = "SCHED_ISO"; | 
|  | break; | 
|  | # endif | 
|  | # ifdef SCHED_DEADLINE | 
|  | case SCHED_DEADLINE: | 
|  | scheduler = "SCHED_DEADLINE"; | 
|  | break; | 
|  | # endif | 
|  | default: | 
|  | scheduler = "SCHED_OTHER"; | 
|  | } | 
|  | printf("sched_getscheduler(0) = %ld (%s)\n", | 
|  | rc, scheduler); | 
|  |  | 
|  | rc = syscall(__NR_sched_getscheduler, -1); | 
|  | printf("sched_getscheduler(-1) = %s\n", sprintrc(rc)); | 
|  |  | 
|  | param->sched_priority = -1; | 
|  |  | 
|  | rc = syscall(__NR_sched_setscheduler, 0, SCHED_FIFO, NULL); | 
|  | printf("sched_setscheduler(0, SCHED_FIFO, NULL) = %s\n", sprintrc(rc)); | 
|  |  | 
|  | rc = syscall(__NR_sched_setscheduler, 0, SCHED_FIFO, param + 1); | 
|  | printf("sched_setscheduler(0, SCHED_FIFO, %p) = %s\n", param + 1, | 
|  | sprintrc(rc)); | 
|  |  | 
|  | rc = syscall(__NR_sched_setscheduler, 0, 0xfaceda7a, param); | 
|  | printf("sched_setscheduler(0, %#x /* SCHED_??? */, [%d]) = %s\n", | 
|  | 0xfaceda7a, param->sched_priority, sprintrc(rc)); | 
|  |  | 
|  | rc = syscall(__NR_sched_setscheduler, -1, SCHED_FIFO, param); | 
|  | printf("sched_setscheduler(-1, SCHED_FIFO, [%d]) = %s\n", | 
|  | param->sched_priority, sprintrc(rc)); | 
|  |  | 
|  | rc = syscall(__NR_sched_setscheduler, 0, SCHED_FIFO, param); | 
|  | printf("sched_setscheduler(0, SCHED_FIFO, [%d]) = %s\n", | 
|  | param->sched_priority, sprintrc(rc)); | 
|  |  | 
|  | puts("+++ exited with 0 +++"); | 
|  | return 0; | 
|  | } | 
|  |  | 
|  | #else | 
|  |  | 
|  | SKIP_MAIN_UNDEFINED("__NR_sched_getscheduler && __NR_sched_setscheduler") | 
|  |  | 
|  | #endif |