master
 1#include "time32.h"
 2#include <string.h>
 3#include <stddef.h>
 4#include <sys/resource.h>
 5
 6struct compat_rusage {
 7	struct timeval32 ru_utime;
 8	struct timeval32 ru_stime;
 9	long	ru_maxrss;
10	long	ru_ixrss;
11	long	ru_idrss;
12	long	ru_isrss;
13	long	ru_minflt;
14	long	ru_majflt;
15	long	ru_nswap;
16	long	ru_inblock;
17	long	ru_oublock;
18	long	ru_msgsnd;
19	long	ru_msgrcv;
20	long	ru_nsignals;
21	long	ru_nvcsw;
22	long	ru_nivcsw;
23};
24
25int __getrusage_time32(int who, struct compat_rusage *usage)
26{
27	struct rusage ru;
28	int r = getrusage(who, &ru);
29	if (!r) {
30		usage->ru_utime.tv_sec = ru.ru_utime.tv_sec;
31		usage->ru_utime.tv_usec = ru.ru_utime.tv_usec;
32		usage->ru_stime.tv_sec = ru.ru_stime.tv_sec;
33		usage->ru_stime.tv_usec = ru.ru_stime.tv_usec;
34		memcpy(&usage->ru_maxrss, &ru.ru_maxrss,
35			sizeof(struct compat_rusage) -
36			offsetof(struct compat_rusage, ru_maxrss));
37	}
38	return r;
39}