/*
* win32gettimeofday . c
* Win32 gettimeofday ( ) replacement
*
* src / port / win32gettimeofday . c
*
* Copyright ( c ) 2003 SRA , Inc .
* Copyright ( c ) 2003 SKC , Inc .
*
* Permission to use , copy , modify , and distribute this software and
* its documentation for any purpose , without fee , and without a
* written agreement is hereby granted , provided that the above
* copyright notice and this paragraph and the following two
* paragraphs appear in all copies .
*
* IN NO EVENT SHALL THE AUTHOR BE LIABLE TO ANY PARTY FOR DIRECT ,
* INDIRECT , SPECIAL , INCIDENTAL , OR CONSEQUENTIAL DAMAGES , INCLUDING
* LOST PROFITS , ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS
* DOCUMENTATION , EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE .
*
* THE AUTHOR SPECIFICALLY DISCLAIMS ANY WARRANTIES , INCLUDING , BUT NOT
* LIMITED TO , THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE . THE SOFTWARE PROVIDED HEREUNDER IS ON AN " AS
* IS " BASIS , AND THE AUTHOR HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE ,
* SUPPORT , UPDATES , ENHANCEMENTS , OR MODIFICATIONS .
*/
#include "c.h"
#include <sysinfoapi.h>
#include <sys/time.h>
/* FILETIME of Jan 1 1970 00:00:00, the PostgreSQL epoch */
static const unsigned __int64 epoch = UINT64CONST(116444736000000000 );
/*
* FILETIME represents the number of 100 - nanosecond intervals since
* January 1 , 1601 ( UTC ) .
*/
#define FILETIME_UNITS_PER_SEC 10000000 L
#define FILETIME_UNITS_PER_USEC 10
/*
* timezone information is stored outside the kernel so tzp isn ' t used anymore .
*
* Note : this function is not for Win32 high precision timing purposes . See
* elapsed_time ( ) .
*/
int
gettimeofday(struct timeval *tp, void *tzp)
{
FILETIME file_time;
ULARGE_INTEGER ularge;
/*
* POSIX declines to define what tzp points to , saying " If tzp is not a
* null pointer , the behavior is unspecified " . Let ' s take this
* opportunity to verify that noplace in Postgres tries to use any
* unportable behavior .
*/
Assert(tzp == NULL);
GetSystemTimePreciseAsFileTime(&file_time);
ularge.LowPart = file_time.dwLowDateTime;
ularge.HighPart = file_time.dwHighDateTime;
tp->tv_sec = (long ) ((ularge.QuadPart - epoch) / FILETIME_UNITS_PER_SEC);
tp->tv_usec = (long ) (((ularge.QuadPart - epoch) % FILETIME_UNITS_PER_SEC)
/ FILETIME_UNITS_PER_USEC);
return 0 ;
}
Messung V0.5 in Prozent C=94 H=100 G=96
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-08-04)
¤
*© Formatika GbR, Deutschland