diff options
| author | Igor Sysoev <igor@sysoev.ru> | 2003-11-11 18:13:43 +0000 |
|---|---|---|
| committer | Igor Sysoev <igor@sysoev.ru> | 2003-11-11 18:13:43 +0000 |
| commit | 27c30f9919ed695ab718c3365a445d47a14fd80f (patch) | |
| tree | b8bd50e2fcecf477f1bb05d61fc7626c06a4442b /src/os | |
| parent | d59a047a7070dc6af13b2e35c097efccc8ce38d0 (diff) | |
| download | nginx-27c30f9919ed695ab718c3365a445d47a14fd80f.tar.gz nginx-27c30f9919ed695ab718c3365a445d47a14fd80f.tar.bz2 | |
nginx-0.0.1-2003-11-11-21:13:43 import
Diffstat (limited to '')
| -rw-r--r-- | src/os/unix/ngx_linux_config.h | 1 | ||||
| -rw-r--r-- | src/os/unix/ngx_solaris_config.h | 1 | ||||
| -rw-r--r-- | src/os/unix/ngx_time.c | 18 | ||||
| -rw-r--r-- | src/os/unix/ngx_time.h | 12 | ||||
| -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 |
7 files changed, 63 insertions, 20 deletions
diff --git a/src/os/unix/ngx_linux_config.h b/src/os/unix/ngx_linux_config.h index 11dbfac34..ca53a2306 100644 --- a/src/os/unix/ngx_linux_config.h +++ b/src/os/unix/ngx_linux_config.h @@ -35,6 +35,7 @@ #define SIZE_FMT "%d" #define SIZEX_FMT "%x" #define PID_FMT "%d" +#define TIME_FMT "%lu" diff --git a/src/os/unix/ngx_solaris_config.h b/src/os/unix/ngx_solaris_config.h index f94936dca..21724f80b 100644 --- a/src/os/unix/ngx_solaris_config.h +++ b/src/os/unix/ngx_solaris_config.h @@ -33,6 +33,7 @@ typedef uint32_t u_int32_t; #define SIZE_FMT "%d" #define SIZEX_FMT "%x" #define PID_FMT "%ld" +#define TIME_FMT "%lu" #ifndef HAVE_SELECT diff --git a/src/os/unix/ngx_time.c b/src/os/unix/ngx_time.c index bf3432ba7..37039918e 100644 --- a/src/os/unix/ngx_time.c +++ b/src/os/unix/ngx_time.c @@ -5,22 +5,24 @@ void ngx_localtime(ngx_tm_t *tm) { +#if (HAVE_LOCALTIME_R) + localtime_r(&ngx_cached_time, tm); - tm->ngx_tm_mon++; - tm->ngx_tm_year += 1900; -} +#else + ngx_tm_t *t; -u_int ngx_msec(void) -{ - struct timeval tv; + t = localtime(&ngx_cached_time); + *tm = *t; - gettimeofday(&tv, NULL); +#endif - return tv.tv_sec * 1000 + tv.tv_usec / 1000; + tm->ngx_tm_mon++; + tm->ngx_tm_year += 1900; } + #if 0 typedef struct { diff --git a/src/os/unix/ngx_time.h b/src/os/unix/ngx_time.h index cdec417e2..9dc4aea40 100644 --- a/src/os/unix/ngx_time.h +++ b/src/os/unix/ngx_time.h @@ -3,9 +3,13 @@ #include <ngx_config.h> +#include <ngx_core.h> + + +typedef uint64_t ngx_epoch_msec_t; typedef u_int ngx_msec_t; -#define NGX_MAX_MSEC (u_int) -1 +#define NGX_MAX_MSEC (ngx_msec_t) -1 typedef struct tm ngx_tm_t; @@ -17,16 +21,14 @@ typedef struct tm ngx_tm_t; #define ngx_tm_year tm_year #define ngx_tm_wday tm_wday -#define ngx_msleep(ms) usleep(ms * 1000) void ngx_localtime(ngx_tm_t *tm); -ngx_msec_t ngx_msec(void); +#define ngx_gettimeofday(tp) gettimeofday(tp, NULL); +#define ngx_msleep(ms) usleep(ms * 1000) -time_t ngx_time(); extern time_t ngx_cached_time; - #endif /* _NGX_TIME_H_INCLUDED_ */ 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_ */ |
