| #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 |