]> granicus.if.org Git - strace/blobdiff - sched.c
io.c: use printaddr and umove_or_printaddr
[strace] / sched.c
diff --git a/sched.c b/sched.c
index d3192fa2161619878a405f6dea265e27b07a0c56..eda241fd3d79d58ee8e447abef1c0a95b00a750f 100644 (file)
--- a/sched.c
+++ b/sched.c
@@ -4,8 +4,7 @@
 
 #include "xlat/schedulers.h"
 
-int
-sys_sched_getscheduler(struct tcb *tcp)
+SYS_FUNC(sched_getscheduler)
 {
        if (entering(tcp)) {
                tprintf("%d", (int) tcp->u_arg[0]);
@@ -17,66 +16,47 @@ sys_sched_getscheduler(struct tcb *tcp)
        return 0;
 }
 
-int
-sys_sched_setscheduler(struct tcb *tcp)
+SYS_FUNC(sched_setscheduler)
 {
-       if (entering(tcp)) {
-               struct sched_param p;
-               tprintf("%d, ", (int) tcp->u_arg[0]);
-               printxval(schedulers, tcp->u_arg[1], "SCHED_???");
-               if (umove(tcp, tcp->u_arg[2], &p) < 0)
-                       tprintf(", %#lx", tcp->u_arg[2]);
-               else
-                       tprintf(", { %d }", p.sched_priority);
-       }
-       return 0;
+       tprintf("%d, ", (int) tcp->u_arg[0]);
+       printxval(schedulers, tcp->u_arg[1], "SCHED_???");
+       tprints(", ");
+       printnum_int(tcp, tcp->u_arg[2], "%d");
+
+       return RVAL_DECODED;
 }
 
-int
-sys_sched_getparam(struct tcb *tcp)
+SYS_FUNC(sched_getparam)
 {
-       if (entering(tcp)) {
+       if (entering(tcp))
                tprintf("%d, ", (int) tcp->u_arg[0]);
-       } else {
-               struct sched_param p;
-               if (umove(tcp, tcp->u_arg[1], &p) < 0)
-                       tprintf("%#lx", tcp->u_arg[1]);
-               else
-                       tprintf("{ %d }", p.sched_priority);
-       }
+       else
+               printnum_int(tcp, tcp->u_arg[1], "%d");
        return 0;
 }
 
-int
-sys_sched_setparam(struct tcb *tcp)
+SYS_FUNC(sched_setparam)
 {
-       if (entering(tcp)) {
-               struct sched_param p;
-               if (umove(tcp, tcp->u_arg[1], &p) < 0)
-                       tprintf("%d, %#lx", (int) tcp->u_arg[0], tcp->u_arg[1]);
-               else
-                       tprintf("%d, { %d }", (int) tcp->u_arg[0], p.sched_priority);
-       }
-       return 0;
+       tprintf("%d, ", (int) tcp->u_arg[0]);
+       printnum_int(tcp, tcp->u_arg[1], "%d");
+
+       return RVAL_DECODED;
 }
 
-int
-sys_sched_get_priority_min(struct tcb *tcp)
+SYS_FUNC(sched_get_priority_min)
 {
-       if (entering(tcp)) {
-               printxval(schedulers, tcp->u_arg[0], "SCHED_???");
-       }
-       return 0;
+       printxval(schedulers, tcp->u_arg[0], "SCHED_???");
+
+       return RVAL_DECODED;
 }
 
-int
-sys_sched_rr_get_interval(struct tcb *tcp)
+SYS_FUNC(sched_rr_get_interval)
 {
        if (entering(tcp)) {
-               tprintf("%ld, ", (long) (pid_t) tcp->u_arg[0]);
+               tprintf("%d, ", (int) tcp->u_arg[0]);
        } else {
                if (syserror(tcp))
-                       tprintf("%#lx", tcp->u_arg[1]);
+                       printaddr(tcp->u_arg[1]);
                else
                        print_timespec(tcp, tcp->u_arg[1]);
        }