[PATCH v6 02/13] tests/getrusage: Correctly use the long types from the rusage struct

Alistair Francis alistair.francis at wdc.com
Fri Mar 20 22:09:28 UTC 2020

The kernel's rusage struct uses the kernel's __kernel_old_timeval which
means that even for 32-bit archs with 64-bit time_t (like RV32) the time
values are 32-bit.

We can fix this by making sure we don't use libc's rusage struct and
instead use our own with the kernel's old timeval.

Signed-off-by: Alistair Francis <alistair.francis at wdc.com>
 tests/getrusage.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/tests/getrusage.c b/tests/getrusage.c
index b046fde2..e8e04275 100644
--- a/tests/getrusage.c
+++ b/tests/getrusage.c
@@ -20,9 +20,10 @@
 # include "xlat.h"
 # include "xlat/usagewho.h"
+# include "kernel_rusage.h"
-invoke_print(int who, const char *who_str, struct rusage *usage)
+invoke_print(int who, const char *who_str, rusage_t *usage)
 	int rc = syscall(__NR_getrusage, who, usage);
 	int saved_errno = errno;
@@ -49,7 +50,7 @@ invoke_print(int who, const char *who_str, struct rusage *usage)
-	TAIL_ALLOC_OBJECT_CONST_PTR(struct rusage, usage);
+	TAIL_ALLOC_OBJECT_CONST_PTR(rusage_t, usage);
 	if (invoke_print(ARG_STR(RUSAGE_SELF), usage)) {

More information about the Strace-devel mailing list