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