dda942d38fbcdfe3407fdf07de0e403b2973958c
[musl] / src / linux / wait4.c
1 #include <sys/wait.h>
2 #include <sys/resource.h>
3 #include <string.h>
4 #define SYSCALL_STANDALONE
5 #include "syscall.h"
6
7 pid_t wait4(pid_t pid, int *status, int options, struct rusage *usage)
8 {
9         pid_t ret = syscall4(__NR_wait4, pid, (long)status, options, (long)usage);
10         /* Fixup kernel time_t... */
11         if (usage) {
12                 long kusage[4];
13                 memcpy(kusage, usage, sizeof kusage);
14                 memmove((struct timeval *)usage + 2, (long *)usage + 4, sizeof *usage - 2*sizeof(struct timeval));
15                 usage->ru_utime = (struct timeval){ kusage[0], kusage[1] };
16                 usage->ru_stime = (struct timeval){ kusage[2], kusage[3] };
17         }
18         return ret;
19 }