xref: /aosp_15_r20/external/strace/tests-mx32/sched_xetscheduler.c (revision cf84ac9a129d8ea9952db616b4e9b904c4bdde56)
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