diff options
Diffstat (limited to '')
| -rw-r--r-- | src/os/win32/ngx_files.h | 4 | ||||
| -rw-r--r-- | src/os/win32/ngx_time.c | 29 | ||||
| -rw-r--r-- | src/os/win32/ngx_time.h | 18 |
3 files changed, 44 insertions, 7 deletions
diff --git a/src/os/win32/ngx_files.h b/src/os/win32/ngx_files.h index a29e333cc..0565eafa6 100644 --- a/src/os/win32/ngx_files.h +++ b/src/os/win32/ngx_files.h @@ -69,8 +69,8 @@ int ngx_file_type(char *filename, ngx_file_info_t *fi); #define ngx_file_uniq(fi) (*(ngx_file_uniq_t *) &fi.nFileIndexHigh) -/* There are 134774 days between 1 Jan 1970 and 1 Jan 1601, - 11644473600 seconds or 11644473600,000,000,0 100-nanosecond intervals */ + +/* 116444736000000000 is commented in src/os/win32/ngx_time.c */ #define ngx_file_mtime(fi) \ (time_t) (((((unsigned __int64) fi.ftLastWriteTime.dwHighDateTime << 32) \ diff --git a/src/os/win32/ngx_time.c b/src/os/win32/ngx_time.c new file mode 100644 index 000000000..8497c538d --- /dev/null +++ b/src/os/win32/ngx_time.c @@ -0,0 +1,29 @@ + +#include <ngx_config.h> +#include <ngx_core.h> + + +void ngx_gettimeofday(struct timeval *tp) +{ + uint64_t intervals; + FILETIME ft; + + GetSystemTimeAsFileTime(&ft); + + /* + * A file time is a 64-bit value that represents the number + * of 100-nanosecond intervals that have elapsed since + * 12:00 A.M. January 1, 1601 (UTC). + * + * Between January 1, 1970 (Epoch) and January 1, 1601 there are + * 134744 days, + * 11644473600 seconds or + * 11644473600,000,000,0 100-nanosecond intervals. + */ + + intervals = ((uint64_t) ft.dwHighDateTime << 32) | ft.dwLowDateTime; + intervals -= 116444736000000000; + + tp->tv_sec = intervals / 10000000; + tp->tv_usec = (intervals % 10000000) / 10; +} diff --git a/src/os/win32/ngx_time.h b/src/os/win32/ngx_time.h index 4cd84e564..36f8918fa 100644 --- a/src/os/win32/ngx_time.h +++ b/src/os/win32/ngx_time.h @@ -6,8 +6,10 @@ #include <ngx_core.h> -typedef unsigned int ngx_msec_t; -#define NGX_MAX_MSEC ~0 +typedef uint64_t ngx_epoch_msec_t; + +typedef u_int ngx_msec_t; +#define NGX_MAX_MSEC (ngx_msec_t) -1 typedef SYSTEMTIME ngx_tm_t; @@ -23,10 +25,16 @@ typedef FILETIME ngx_mtime_t; #define ngx_msleep Sleep #define ngx_localtime GetLocalTime -#define ngx_msec GetTickCount -/* STUB */ -#define ngx_time() time(NULL) + +struct timeval { + long tv_sec; + long tv_usec; +}; + + +void ngx_gettimeofday(struct timeval *tp); + #endif /* _NGX_TIME_H_INCLUDED_ */ |
