12345678910111213141516171819202122232425262728293031323334353637383940 |
- #define _BSD_SOURCE
- #include "time32.h"
- #include <string.h>
- #include <stddef.h>
- #include <sys/wait.h>
- struct compat_rusage {
- struct timeval32 ru_utime;
- struct timeval32 ru_stime;
- long ru_maxrss;
- long ru_ixrss;
- long ru_idrss;
- long ru_isrss;
- long ru_minflt;
- long ru_majflt;
- long ru_nswap;
- long ru_inblock;
- long ru_oublock;
- long ru_msgsnd;
- long ru_msgrcv;
- long ru_nsignals;
- long ru_nvcsw;
- long ru_nivcsw;
- };
- pid_t __wait4_time32(pid_t pid, int *status, int options, struct compat_rusage *usage)
- {
- struct rusage ru;
- int r = wait4(pid, status, options, usage ? &ru : 0);
- if (!r && usage) {
- usage->ru_utime.tv_sec = ru.ru_utime.tv_sec;
- usage->ru_utime.tv_usec = ru.ru_utime.tv_usec;
- usage->ru_stime.tv_sec = ru.ru_stime.tv_sec;
- usage->ru_stime.tv_usec = ru.ru_stime.tv_usec;
- memcpy(&usage->ru_maxrss, &ru.ru_maxrss,
- sizeof(struct compat_rusage) -
- offsetof(struct compat_rusage, ru_maxrss));
- }
- return r;
- }
|