cleanup cruft left from when kernel and user time_t disagreed

This commit is contained in:
Rich Felker 2011-02-19 02:28:42 -05:00
parent 52874c82a8
commit cc2a8228fa
2 changed files with 3 additions and 12 deletions

View File

@ -1,9 +1,8 @@
#define _GNU_SOURCE
#include <sys/wait.h> #include <sys/wait.h>
#include <sys/resource.h> #include <sys/resource.h>
#include "syscall.h" #include "syscall.h"
pid_t wait4(pid_t, int *, int, struct rusage *);
pid_t wait3(int *status, int options, struct rusage *usage) pid_t wait3(int *status, int options, struct rusage *usage)
{ {
return wait4(-1, status, options, usage); return wait4(-1, status, options, usage);

View File

@ -1,3 +1,4 @@
#define _GNU_SOURCE
#include <sys/wait.h> #include <sys/wait.h>
#include <sys/resource.h> #include <sys/resource.h>
#include <string.h> #include <string.h>
@ -5,14 +6,5 @@
pid_t wait4(pid_t pid, int *status, int options, struct rusage *usage) pid_t wait4(pid_t pid, int *status, int options, struct rusage *usage)
{ {
pid_t ret = syscall4(__NR_wait4, pid, (long)status, options, (long)usage); return syscall4(__NR_wait4, pid, (long)status, options, (long)usage);
/* Fixup kernel time_t... */
if (usage) {
long kusage[4];
memcpy(kusage, usage, sizeof kusage);
memmove((struct timeval *)usage + 2, (long *)usage + 4, sizeof *usage - 2*sizeof(struct timeval));
usage->ru_utime = (struct timeval){ kusage[0], kusage[1] };
usage->ru_stime = (struct timeval){ kusage[2], kusage[3] };
}
return ret;
} }