remove LFS64 programming interfaces (macro-only) from _GNU_SOURCE
[musl] / compat / time32 / getrusage_time32.c
1 #include "time32.h"
2 #include <string.h>
3 #include <stddef.h>
4 #include <sys/resource.h>
5
6 struct 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
25 int __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 }