]> granicus.if.org Git - strace/commitdiff
rtc.c: optimize decoding of paired ioctls
authorDmitry V. Levin <ldv@altlinux.org>
Wed, 25 May 2016 07:37:44 +0000 (07:37 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Wed, 25 May 2016 07:37:44 +0000 (07:37 +0000)
* rtc.c (rtc_ioctl): Optimize decoding of RTC_ALM_READ/RTC_ALM_SET,
RTC_RD_TIME/RTC_SET_TIME, and RTC_WKALM_RD/RTC_WKALM_SET ioctl pairs.

rtc.c

diff --git a/rtc.c b/rtc.c
index 0806b0e43d2f6bef315ef42585190b6225992d8f..1978ff0b7d1755c68fc371bfffc236aa8b35ef74 100644 (file)
--- a/rtc.c
+++ b/rtc.c
@@ -49,7 +49,6 @@ decode_rtc_time(struct tcb *tcp, const long addr)
 {
        struct rtc_time rt;
 
-       tprints(", ");
        if (!umove_or_printaddr(tcp, addr, &rt))
                print_rtc_time(tcp, &rt);
 }
@@ -59,7 +58,6 @@ decode_rtc_wkalrm(struct tcb *tcp, const long addr)
 {
        struct rtc_wkalrm wk;
 
-       tprints(", ");
        if (!umove_or_printaddr(tcp, addr, &wk)) {
                tprintf("{enabled=%d, pending=%d, ", wk.enabled, wk.pending);
                print_rtc_time(tcp, &wk.time);
@@ -71,14 +69,14 @@ int
 rtc_ioctl(struct tcb *tcp, const unsigned int code, const long arg)
 {
        switch (code) {
-       case RTC_ALM_SET:
-       case RTC_SET_TIME:
-               decode_rtc_time(tcp, arg);
-               break;
        case RTC_ALM_READ:
        case RTC_RD_TIME:
                if (entering(tcp))
                        return 0;
+               /* fall through */
+       case RTC_ALM_SET:
+       case RTC_SET_TIME:
+               tprints(", ");
                decode_rtc_time(tcp, arg);
                break;
        case RTC_IRQP_SET:
@@ -92,12 +90,12 @@ rtc_ioctl(struct tcb *tcp, const unsigned int code, const long arg)
                tprints(", ");
                printnum_ulong(tcp, arg);
                break;
-       case RTC_WKALM_SET:
-               decode_rtc_wkalrm(tcp, arg);
-               break;
        case RTC_WKALM_RD:
                if (entering(tcp))
                        return 0;
+               /* fall through */
+       case RTC_WKALM_SET:
+               tprints(", ");
                decode_rtc_wkalrm(tcp, arg);
                break;
 #ifdef RTC_VL_READ