1 #include "defs.h"
2
3 #include <sched.h>
4
5 #include "xlat/schedulers.h"
6
SYS_FUNC(sched_getscheduler)7 SYS_FUNC(sched_getscheduler)
8 {
9 if (entering(tcp)) {
10 tprintf("%d", (int) tcp->u_arg[0]);
11 } else if (!syserror(tcp)) {
12 tcp->auxstr = xlookup(schedulers, tcp->u_rval);
13 if (tcp->auxstr != NULL)
14 return RVAL_STR;
15 }
16 return 0;
17 }
18
SYS_FUNC(sched_setscheduler)19 SYS_FUNC(sched_setscheduler)
20 {
21 if (entering(tcp)) {
22 struct sched_param p;
23 tprintf("%d, ", (int) tcp->u_arg[0]);
24 printxval(schedulers, tcp->u_arg[1], "SCHED_???");
25 if (umove(tcp, tcp->u_arg[2], &p) < 0)
26 tprintf(", %#lx", tcp->u_arg[2]);
27 else
28 tprintf(", { %d }", p.sched_priority);
29 }
30 return 0;
31 }
32
SYS_FUNC(sched_getparam)33 SYS_FUNC(sched_getparam)
34 {
35 if (entering(tcp)) {
36 tprintf("%d, ", (int) tcp->u_arg[0]);
37 } else {
38 struct sched_param p;
39 if (umove(tcp, tcp->u_arg[1], &p) < 0)
40 tprintf("%#lx", tcp->u_arg[1]);
41 else
42 tprintf("{ %d }", p.sched_priority);
43 }
44 return 0;
45 }
46
SYS_FUNC(sched_setparam)47 SYS_FUNC(sched_setparam)
48 {
49 if (entering(tcp)) {
50 struct sched_param p;
51 if (umove(tcp, tcp->u_arg[1], &p) < 0)
52 tprintf("%d, %#lx", (int) tcp->u_arg[0], tcp->u_arg[1]);
53 else
54 tprintf("%d, { %d }", (int) tcp->u_arg[0], p.sched_priority);
55 }
56 return 0;
57 }
58
SYS_FUNC(sched_get_priority_min)59 SYS_FUNC(sched_get_priority_min)
60 {
61 if (entering(tcp)) {
62 printxval(schedulers, tcp->u_arg[0], "SCHED_???");
63 }
64 return 0;
65 }
66
SYS_FUNC(sched_rr_get_interval)67 SYS_FUNC(sched_rr_get_interval)
68 {
69 if (entering(tcp)) {
70 tprintf("%ld, ", (long) (pid_t) tcp->u_arg[0]);
71 } else {
72 if (syserror(tcp))
73 tprintf("%#lx", tcp->u_arg[1]);
74 else
75 print_timespec(tcp, tcp->u_arg[1]);
76 }
77 return 0;
78 }
79