summaryrefslogtreecommitdiffhomepage
path: root/src/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/core')
-rw-r--r--src/core/ngx_atomic.h32
-rw-r--r--src/core/ngx_times.h6
2 files changed, 17 insertions, 21 deletions
diff --git a/src/core/ngx_atomic.h b/src/core/ngx_atomic.h
index bbf4a7685..a149ad28b 100644
--- a/src/core/ngx_atomic.h
+++ b/src/core/ngx_atomic.h
@@ -72,13 +72,19 @@ static ngx_inline uint32_t ngx_atomic_cmp_set(ngx_atomic_t *lock,
#define ngx_atomic_inc(p) InterlockedIncrement((long *) p)
#define ngx_atomic_dec(p) InterlockedDecrement((long *) p)
-/* STUB */
-#define ngx_atomic_cmp_set(lock, old, set) 1
-#if 0
-#define ngx_atomic_cmp_set(lock, old, set) \
- InterlockedCompareExchange(lock, set, old)
-#endif
+#if defined(__WATCOMC__) || defined(__BORLANDC__)
+
+#define ngx_atomic_cmp_set(lock, old, set) \
+ (InterlockedCompareExchange((long *) lock, set, old) == old)
+
+#else
+
+#define ngx_atomic_cmp_set(lock, old, set) \
+ (InterlockedCompareExchange((void **) lock, (void *) set, (void *) old) \
+ == (void *) old)
+
+#endif
#else
@@ -93,18 +99,8 @@ typedef volatile uint32_t ngx_atomic_t;
#endif
-static ngx_inline ngx_int_t ngx_trylock(ngx_atomic_t *lock)
-{
- if (*lock) {
- return NGX_BUSY;
- }
-
- if (ngx_atomic_cmp_set(lock, 0, 1)) {
- return NGX_OK;
- }
-
- return NGX_BUSY;
-}
+#define ngx_trylock(lock) (*(lock) == 0 && ngx_atomic_cmp_set(lock, 0, 1))
+#define ngx_unlock(lock) *(lock) = 0
#endif /* _NGX_ATOMIC_H_INCLUDED_ */
diff --git a/src/core/ngx_times.h b/src/core/ngx_times.h
index 1fb712d44..b5b6eb60a 100644
--- a/src/core/ngx_times.h
+++ b/src/core/ngx_times.h
@@ -28,9 +28,9 @@ extern volatile time_t ngx_cached_time;
#endif
-extern volatile ngx_str_t ngx_cached_err_log_time;
-extern volatile ngx_str_t ngx_cached_http_time;
-extern volatile ngx_str_t ngx_cached_http_log_time;
+extern ngx_thread_volatile ngx_str_t ngx_cached_err_log_time;
+extern ngx_thread_volatile ngx_str_t ngx_cached_http_time;
+extern ngx_thread_volatile ngx_str_t ngx_cached_http_log_time;
extern ngx_epoch_msec_t ngx_start_msec;