[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Problem with time package, struct rusage and wait3



Hi

I looked to the package time and I think I found an error.
The package didn't build because during the configure phase, it tried to
test if wait3 fills correctly the rusage struct.
Under the Hurd, it doesn't.
I attached test.c.
Under Linux, struct rusage is modified after return of wait3.

I didn't test the rusage function.

#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <stdio.h>
/* HP-UX has wait3 but does not fill in rusage at all.  */
main() {
  struct rusage r;
  int i;
  /* Use a field that we can force nonzero --
     voluntary context switches.
     For systems like NeXT and OSF/1 that don't set it,
     also use the system CPU time.  And page faults (I/O) for Linux.  */
  r.ru_nvcsw = 0;
  r.ru_stime.tv_sec = 0;
  r.ru_stime.tv_usec = 0;
  r.ru_majflt = r.ru_minflt = 0;
  switch (fork()) {
  case 0: /* Child.  */
    sleep(1); /* Give up the CPU.  */
    _exit(0);
  case -1: _exit(0); /* What can we do?  */
  default: /* Parent.  */
    wait3(&i, 0, &r);
    sleep(2); /* Avoid "text file busy" from rm on fast HP-UX machines.  */
    exit(r.ru_nvcsw == 0 && r.ru_majflt == 0 && r.ru_minflt == 0
         && r.ru_stime.tv_sec == 0 && r.ru_stime.tv_usec == 0);
  }
}

--
Thomas Poindessous



Reply to: