aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/linux/tv32-compat.h
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix/sysv/linux/tv32-compat.h')
-rw-r--r--sysdeps/unix/sysv/linux/tv32-compat.h26
1 files changed, 26 insertions, 0 deletions
diff --git a/sysdeps/unix/sysv/linux/tv32-compat.h b/sysdeps/unix/sysv/linux/tv32-compat.h
index 574284fc8e..d19b3b378d 100644
--- a/sysdeps/unix/sysv/linux/tv32-compat.h
+++ b/sysdeps/unix/sysv/linux/tv32-compat.h
@@ -75,4 +75,30 @@ rusage32_to_rusage64 (const struct __rusage32 *restrict r32,
r64->ru_nivcsw = r32->ru_nivcsw;
}
+static inline void
+rusage64_to_rusage32 (const struct __rusage64 *restrict r64,
+ struct __rusage32 *restrict r32)
+{
+ /* Make sure the entire output structure is cleared, including
+ padding and reserved fields. */
+ memset (r32, 0, sizeof *r32);
+
+ r32->ru_utime = valid_timeval64_to_timeval32 (r64->ru_utime);
+ r32->ru_stime = valid_timeval64_to_timeval32 (r64->ru_stime);
+ r32->ru_maxrss = r64->ru_maxrss;
+ r32->ru_ixrss = r64->ru_ixrss;
+ r32->ru_idrss = r64->ru_idrss;
+ r32->ru_isrss = r64->ru_isrss;
+ r32->ru_minflt = r64->ru_minflt;
+ r32->ru_majflt = r64->ru_majflt;
+ r32->ru_nswap = r64->ru_nswap;
+ r32->ru_inblock = r64->ru_inblock;
+ r32->ru_oublock = r64->ru_oublock;
+ r32->ru_msgsnd = r64->ru_msgsnd;
+ r32->ru_msgrcv = r64->ru_msgrcv;
+ r32->ru_nsignals = r64->ru_nsignals;
+ r32->ru_nvcsw = r64->ru_nvcsw;
+ r32->ru_nivcsw = r64->ru_nivcsw;
+}
+
#endif /* tv32-compat.h */