Index: src/port/getrusage.c =================================================================== RCS file: /projects/cvsroot/pgsql-server/src/port/getrusage.c,v retrieving revision 1.6 diff -c -r1.6 getrusage.c *** src/port/getrusage.c 29 Aug 2004 04:13:12 -0000 1.6 --- src/port/getrusage.c 2 Sep 2004 17:44:08 -0000 *************** *** 26,31 **** --- 26,32 ---- * solaris_sparc * svr4 * hpux 9.* + * win32 * which currently is all the supported platforms that don't have a * native version of getrusage(). So, if configure decides to compile * this file at all, we just use this version unconditionally. *************** *** 35,42 **** getrusage(int who, struct rusage * rusage) { #ifdef WIN32 ! if (rusage) ! memset(rusage, 0, sizeof(rusage)); #else struct tms tms; int tick_rate = CLK_TCK; /* ticks per second */ --- 36,69 ---- getrusage(int who, struct rusage * rusage) { #ifdef WIN32 ! FILETIME starttime; ! FILETIME exittime; ! FILETIME kerneltime; ! FILETIME usertime; ! ULARGE_INTEGER li; ! ! if (rusage == (struct rusage *)NULL) ! { ! errno = EFAULT; ! return -1; ! } ! memset(rusage, 0, sizeof(struct rusage)); ! if (GetProcessTimes(GetCurrentProcess(), &starttime, &exittime, &kerneltime, &usertime) == 0) ! { ! _dosmaperr(GetLastError()); ! return -1; ! } ! ! /* Convert FILETIMEs (0.1 us) to struct timeval */ ! memcpy(&li, &kerneltime, sizeof(FILETIME)); ! li.QuadPart /= 10L; /* Convert to microseconds */ ! rusage->ru_stime.tv_sec = li.QuadPart / 1000000L; ! rusage->ru_stime.tv_usec = li.QuadPart % 1000000L; ! ! memcpy(&li, &usertime, sizeof(FILETIME)); ! li.QuadPart /= 10L; /* Convert to microseconds */ ! rusage->ru_utime.tv_sec = li.QuadPart / 1000000L; ! rusage->ru_utime.tv_usec = li.QuadPart % 1000000L; #else struct tms tms; int tick_rate = CLK_TCK; /* ticks per second */