diff options
Diffstat (limited to 'src/os/win32')
-rw-r--r-- | src/os/win32/ngx_atomic.h | 3 | ||||
-rw-r--r-- | src/os/win32/ngx_process_cycle.c | 8 | ||||
-rw-r--r-- | src/os/win32/ngx_thread.c | 31 | ||||
-rw-r--r-- | src/os/win32/ngx_thread.h | 10 | ||||
-rw-r--r-- | src/os/win32/ngx_time.c | 20 | ||||
-rw-r--r-- | src/os/win32/ngx_time.h | 4 | ||||
-rw-r--r-- | src/os/win32/ngx_win32_config.h | 4 |
7 files changed, 49 insertions, 31 deletions
diff --git a/src/os/win32/ngx_atomic.h b/src/os/win32/ngx_atomic.h index 87de57dd1..1e3334548 100644 --- a/src/os/win32/ngx_atomic.h +++ b/src/os/win32/ngx_atomic.h @@ -41,6 +41,9 @@ typedef volatile ngx_atomic_uint_t ngx_atomic_t; #define ngx_atomic_fetch_add(p, add) InterlockedExchangeAdd((long *) p, add) +#define ngx_memory_barrier() + + void ngx_spinlock(ngx_atomic_t *lock, ngx_uint_t spin); #define ngx_trylock(lock) (*(lock) == 0 && ngx_atomic_cmp_set(lock, 0, 1)) diff --git a/src/os/win32/ngx_process_cycle.c b/src/os/win32/ngx_process_cycle.c index 7eabefe5c..be363e258 100644 --- a/src/os/win32/ngx_process_cycle.c +++ b/src/os/win32/ngx_process_cycle.c @@ -10,7 +10,7 @@ #include <nginx.h> -static void *ngx_worker_thread_cycle(void *data); +static ngx_thread_value_t __stdcall ngx_worker_thread_cycle(void *data); static long __stdcall ngx_window_procedure(HWND window, u_int message, u_int wparam, long lparam); @@ -202,7 +202,7 @@ ngx_single_process_cycle(ngx_cycle_t *cycle) } -static void * +static ngx_thread_value_t __stdcall ngx_worker_thread_cycle(void *data) { ngx_cycle_t *cycle; @@ -212,10 +212,10 @@ ngx_worker_thread_cycle(void *data) while (!ngx_quit) { ngx_log_debug0(NGX_LOG_DEBUG_EVENT, cycle->log, 0, "worker cycle"); - ngx_process_events(cycle); + ngx_process_events_and_timers(cycle); } - return NULL; + return 0; } diff --git a/src/os/win32/ngx_thread.c b/src/os/win32/ngx_thread.c index 0703ac7d4..f8cedd2a5 100644 --- a/src/os/win32/ngx_thread.c +++ b/src/os/win32/ngx_thread.c @@ -14,13 +14,13 @@ ngx_int_t ngx_threads_n; static size_t stack_size; -ngx_err_t ngx_create_thread(ngx_tid_t *tid, void* (*func)(void *arg), void *arg, - ngx_log_t *log) +ngx_err_t +ngx_create_thread(ngx_tid_t *tid, + ngx_thread_value_t (__stdcall *func)(void *arg), void *arg, ngx_log_t *log) { ngx_err_t err; - *tid = CreateThread(NULL, stack_size, - (LPTHREAD_START_ROUTINE) func, arg, 0, NULL); + *tid = CreateThread(NULL, stack_size, func, arg, 0, NULL); if (*tid != NULL) { return 0; @@ -32,7 +32,8 @@ ngx_err_t ngx_create_thread(ngx_tid_t *tid, void* (*func)(void *arg), void *arg, } -ngx_int_t ngx_init_threads(int n, size_t size, ngx_cycle_t *cycle) +ngx_int_t +ngx_init_threads(int n, size_t size, ngx_cycle_t *cycle) { stack_size = size; @@ -40,7 +41,8 @@ ngx_int_t ngx_init_threads(int n, size_t size, ngx_cycle_t *cycle) } -ngx_err_t ngx_thread_key_create(ngx_tls_key_t *key) +ngx_err_t +ngx_thread_key_create(ngx_tls_key_t *key) { *key = TlsAlloc(); @@ -52,7 +54,8 @@ ngx_err_t ngx_thread_key_create(ngx_tls_key_t *key) } -ngx_err_t ngx_thread_set_tls(ngx_tls_key_t *key, void *data) +ngx_err_t +ngx_thread_set_tls(ngx_tls_key_t *key, void *data) { if (TlsSetValue(*key, data) == 0) { return ngx_errno; @@ -62,7 +65,8 @@ ngx_err_t ngx_thread_set_tls(ngx_tls_key_t *key, void *data) } -ngx_mutex_t *ngx_mutex_init(ngx_log_t *log, ngx_uint_t flags) +ngx_mutex_t * +ngx_mutex_init(ngx_log_t *log, ngx_uint_t flags) { return (ngx_mutex_t *) 1; } @@ -70,15 +74,22 @@ ngx_mutex_t *ngx_mutex_init(ngx_log_t *log, ngx_uint_t flags) /* STUB */ -ngx_int_t +void ngx_mutex_lock(ngx_mutex_t *m) { - return NGX_OK; + return; } + ngx_int_t ngx_mutex_trylock(ngx_mutex_t *m) { return NGX_OK; } + +void +ngx_mutex_unlock(ngx_mutex_t *m) { + return; +} + /**/ diff --git a/src/os/win32/ngx_thread.h b/src/os/win32/ngx_thread.h index b55dcca4d..3da1dc25c 100644 --- a/src/os/win32/ngx_thread.h +++ b/src/os/win32/ngx_thread.h @@ -14,6 +14,7 @@ typedef HANDLE ngx_tid_t; typedef DWORD ngx_tls_key_t; +typedef DWORD ngx_thread_value_t; typedef struct { @@ -22,8 +23,8 @@ typedef struct { } ngx_mutex_t; -ngx_err_t ngx_create_thread(ngx_tid_t *tid, void* (*func)(void *arg), - void *arg, ngx_log_t *log); +ngx_err_t ngx_create_thread(ngx_tid_t *tid, + ngx_thread_value_t (__stdcall *func)(void *arg), void *arg, ngx_log_t *log); ngx_int_t ngx_init_threads(int n, size_t size, ngx_cycle_t *cycle); ngx_err_t ngx_thread_key_create(ngx_tls_key_t *key); @@ -41,14 +42,13 @@ ngx_err_t ngx_thread_set_tls(ngx_tls_key_t *key, void *data); ngx_mutex_t *ngx_mutex_init(ngx_log_t *log, ngx_uint_t flags); -ngx_int_t ngx_mutex_lock(ngx_mutex_t *m); +void ngx_mutex_lock(ngx_mutex_t *m); ngx_int_t ngx_mutex_trylock(ngx_mutex_t *m); +void ngx_mutex_unlock(ngx_mutex_t *m); /* STUB */ #define NGX_MUTEX_LIGHT 0 - -#define ngx_mutex_unlock(m) /**/ diff --git a/src/os/win32/ngx_time.c b/src/os/win32/ngx_time.c index 04a1af6a3..39ce63336 100644 --- a/src/os/win32/ngx_time.c +++ b/src/os/win32/ngx_time.c @@ -8,7 +8,8 @@ #include <ngx_core.h> -void ngx_gettimeofday(struct timeval *tp) +void +ngx_gettimeofday(struct timeval *tp) { uint64_t intervals; FILETIME ft; @@ -36,29 +37,28 @@ void ngx_gettimeofday(struct timeval *tp) } -void ngx_libc_localtime(struct tm *tm) +void +ngx_libc_localtime(time_t s, struct tm *tm) { - time_t now; struct tm *t; - now = ngx_time(); - t = localtime(&now); + t = localtime(&s); *tm = *t; } -void ngx_libc_gmtime(struct tm *tm) +void +ngx_libc_gmtime(time_t s, struct tm *tm) { - time_t now; struct tm *t; - now = ngx_time(); - t = gmtime(&now); + t = gmtime(&s); *tm = *t; } -ngx_int_t ngx_gettimezone(void) +ngx_int_t +ngx_gettimezone(void) { TIME_ZONE_INFORMATION tz; diff --git a/src/os/win32/ngx_time.h b/src/os/win32/ngx_time.h index 4c1498407..225c38cf0 100644 --- a/src/os/win32/ngx_time.h +++ b/src/os/win32/ngx_time.h @@ -40,8 +40,8 @@ typedef FILETIME ngx_mtime_t; #define NGX_HAVE_GETTIMEZONE 1 ngx_int_t ngx_gettimezone(void); -void ngx_libc_localtime(struct tm *tm); -void ngx_libc_gmtime(struct tm *tm); +void ngx_libc_localtime(time_t s, struct tm *tm); +void ngx_libc_gmtime(time_t s, struct tm *tm); void ngx_gettimeofday(struct timeval *tp); diff --git a/src/os/win32/ngx_win32_config.h b/src/os/win32/ngx_win32_config.h index a814acbdc..9658c1225 100644 --- a/src/os/win32/ngx_win32_config.h +++ b/src/os/win32/ngx_win32_config.h @@ -8,6 +8,10 @@ #define _NGX_WIN32_CONFIG_H_INCLUDED_ +#define WIN32 0x0400 +#define _WIN32_WINNT 0x0400 + + #define STRICT #define WIN32_LEAN_AND_MEAN |