Browse Source

cleanup cruft left from when kernel and user time_t disagreed

rs-1.0
Rich Felker 15 years ago
parent
commit
cc2a8228fa
  1. 3
      src/linux/wait3.c
  2. 12
      src/linux/wait4.c

3
src/linux/wait3.c

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

12
src/linux/wait4.c

@ -1,3 +1,4 @@
#define _GNU_SOURCE
#include <sys/wait.h>
#include <sys/resource.h>
#include <string.h>
@ -5,14 +6,5 @@
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);
/* 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;
return syscall4(__NR_wait4, pid, (long)status, options, (long)usage);
}

Loading…
Cancel
Save