]> granicus.if.org Git - strace/blobdiff - tests/waitid.c
tests: extend TEST_NETLINK_OBJECT macro
[strace] / tests / waitid.c
index bd7e8efb0b829322e3aac8cd52af35d1a339d42d..26f5b86922bc630fe8f5ebed4511c2d3c81c56c8 100644 (file)
@@ -2,6 +2,7 @@
  * Check decoding of waitid syscall.
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
 #include <unistd.h>
 #include <sys/wait.h>
 #include <sys/resource.h>
-#include <sys/syscall.h>
+#include <asm/unistd.h>
 
 static const char *
 sprint_rusage(const struct rusage *const ru)
 {
        static char buf[1024];
        snprintf(buf, sizeof(buf),
-                "{ru_utime={%llu, %llu}"
-                ", ru_stime={%llu, %llu}"
-#ifdef VERBOSE_RUSAGE
+                "{ru_utime={tv_sec=%lld, tv_usec=%llu}"
+                ", ru_stime={tv_sec=%lld, tv_usec=%llu}"
+#if VERBOSE
                 ", ru_maxrss=%llu"
                 ", ru_ixrss=%llu"
                 ", ru_idrss=%llu"
@@ -62,25 +63,25 @@ sprint_rusage(const struct rusage *const ru)
 #else
                 ", ...}"
 #endif
-                , widen_to_ull(ru->ru_utime.tv_sec)
-                , widen_to_ull(ru->ru_utime.tv_usec)
-                , widen_to_ull(ru->ru_stime.tv_sec)
-                , widen_to_ull(ru->ru_stime.tv_usec)
-#ifdef VERBOSE_RUSAGE
-                , widen_to_ull(ru->ru_maxrss)
-                , widen_to_ull(ru->ru_ixrss)
-                , widen_to_ull(ru->ru_idrss)
-                , widen_to_ull(ru->ru_isrss)
-                , widen_to_ull(ru->ru_minflt)
-                , widen_to_ull(ru->ru_majflt)
-                , widen_to_ull(ru->ru_nswap)
-                , widen_to_ull(ru->ru_inblock)
-                , widen_to_ull(ru->ru_oublock)
-                , widen_to_ull(ru->ru_msgsnd)
-                , widen_to_ull(ru->ru_msgrcv)
-                , widen_to_ull(ru->ru_nsignals)
-                , widen_to_ull(ru->ru_nvcsw)
-                , widen_to_ull(ru->ru_nivcsw)
+                , (long long) ru->ru_utime.tv_sec
+                , zero_extend_signed_to_ull(ru->ru_utime.tv_usec)
+                , (long long) ru->ru_stime.tv_sec
+                , zero_extend_signed_to_ull(ru->ru_stime.tv_usec)
+#if VERBOSE
+                , zero_extend_signed_to_ull(ru->ru_maxrss)
+                , zero_extend_signed_to_ull(ru->ru_ixrss)
+                , zero_extend_signed_to_ull(ru->ru_idrss)
+                , zero_extend_signed_to_ull(ru->ru_isrss)
+                , zero_extend_signed_to_ull(ru->ru_minflt)
+                , zero_extend_signed_to_ull(ru->ru_majflt)
+                , zero_extend_signed_to_ull(ru->ru_nswap)
+                , zero_extend_signed_to_ull(ru->ru_inblock)
+                , zero_extend_signed_to_ull(ru->ru_oublock)
+                , zero_extend_signed_to_ull(ru->ru_msgsnd)
+                , zero_extend_signed_to_ull(ru->ru_msgrcv)
+                , zero_extend_signed_to_ull(ru->ru_nsignals)
+                , zero_extend_signed_to_ull(ru->ru_nvcsw)
+                , zero_extend_signed_to_ull(ru->ru_nivcsw)
 #endif
                 );
        return buf;
@@ -110,7 +111,8 @@ si_code_2_name(const int code)
 #ifdef CLD_CONTINUED
        CASE(CLD_CONTINUED);
 #endif
-       default: perror_msg_and_fail("unknown si_code %d", code);
+       default:
+               perror_msg_and_fail("unknown si_code %d", code);
        }
 }
 
@@ -130,21 +132,21 @@ sprint_siginfo(const siginfo_t *const si, const char *const status_text)
                 si->si_pid,
                 si->si_uid,
                 status_text,
-                widen_to_ull(si->si_utime),
-                widen_to_ull(si->si_stime));
+                zero_extend_signed_to_ull(si->si_utime),
+                zero_extend_signed_to_ull(si->si_stime));
        return buf;
 }
 
 static unsigned long
 poison(unsigned int v)
 {
-       return (unsigned long) 0xfacefeed00000000 | v;
+       return (unsigned long) 0xfacefeed00000000ULL | v;
 }
 
 static long
 do_waitid(const unsigned int idtype,
          const unsigned int id,
-         const siginfo_t const *infop,
+         const siginfo_t *const infop,
          const unsigned int options,
          const struct rusage *const rusage)
 {
@@ -185,9 +187,9 @@ main(void)
                perror_msg_and_fail("waitid #1");
        tprintf("waitid(P_PID, %d, NULL, WNOHANG|WEXITED, NULL) = 0\n", pid);
 
-       siginfo_t *const sinfo = tail_alloc(sizeof(*sinfo));
+       TAIL_ALLOC_OBJECT_CONST_PTR(siginfo_t, sinfo);
        memset(sinfo, 0, sizeof(*sinfo));
-       struct rusage *const rusage = tail_alloc(sizeof(*rusage));
+       TAIL_ALLOC_OBJECT_CONST_PTR(struct rusage, rusage);
        if (do_waitid(P_PID, pid, sinfo, WNOHANG|WEXITED|WSTOPPED, rusage))
                perror_msg_and_fail("waitid #2");
        tprintf("waitid(P_PID, %d, {}, WNOHANG|WEXITED|WSTOPPED, %s) = 0\n",