diff src/os/win32/ngx_atomic.h @ 373:018569a8f09c

nginx-0.0.7-2004-06-30-19:30:41 import
author Igor Sysoev <igor@sysoev.ru>
date Wed, 30 Jun 2004 15:30:41 +0000
parents src/core/ngx_atomic.h@780e93985b93
children 5cdc4838d4e8
line wrap: on
line diff
copy from src/core/ngx_atomic.h
copy to src/os/win32/ngx_atomic.h
--- a/src/core/ngx_atomic.h
+++ b/src/os/win32/ngx_atomic.h
@@ -6,74 +6,11 @@
 #include <ngx_core.h>
 
 
-#if ( __i386__ || __amd64__ )
-
-typedef volatile uint32_t  ngx_atomic_t;
-
-#if (NGX_SMP)
-#define NGX_SMP_LOCK  "lock;"
-#else
-#define NGX_SMP_LOCK
-#endif
-
-
-static ngx_inline uint32_t ngx_atomic_inc(ngx_atomic_t *value)
-{
-    uint32_t  old;
-
-    __asm__ volatile (
-
-        NGX_SMP_LOCK
-    "   xaddl  %0, %2;   "
-    "   incl   %0;       "
-
-    : "=q" (old) : "0" (1), "m" (*value));
-
-    return old;
-}
-
-
-static ngx_inline uint32_t ngx_atomic_dec(ngx_atomic_t *value)
-{
-    uint32_t  old;
-
-    __asm__ volatile (
-
-        NGX_SMP_LOCK
-    "   xaddl  %0, %1;   "
-    "   decl   %0;       "
-
-    : "=q" (old) : "0" (-1), "m" (*value));
-
-    return old;
-}
-
-
-static ngx_inline uint32_t ngx_atomic_cmp_set(ngx_atomic_t *lock,
-                                              ngx_atomic_t old,
-                                              ngx_atomic_t set)
-{
-    uint32_t  res;
-
-    __asm__ volatile (
-
-        NGX_SMP_LOCK
-    "   cmpxchgl  %3, %1;   "
-    "   setz      %%al;     "
-    "   movzbl    %%al, %0; "
-
-    : "=a" (res) : "m" (*lock), "a" (old), "q" (set));
-
-    return res;
-}
-
-
-#elif (WIN32)
-
 #define ngx_atomic_inc(p)       InterlockedIncrement((long *) p)
 #define ngx_atomic_dec(p)       InterlockedDecrement((long *) p)
 
-#if defined(__WATCOMC__) || defined(__BORLANDC__)
+
+#if defined( __WATCOMC__ ) || defined( __BORLANDC__ )
 
 #define ngx_atomic_cmp_set(lock, old, set)                                    \
      (InterlockedCompareExchange((long *) lock, set, old) == old)
@@ -86,18 +23,8 @@ static ngx_inline uint32_t ngx_atomic_cm
 
 #endif
 
-#else
 
-typedef volatile uint32_t  ngx_atomic_t;
-
-/* STUB */
-#define ngx_atomic_inc(x)   (*(x))++;
-#define ngx_atomic_dec(x)   (*(x))--;
-#define ngx_atomic_cmp_set(lock, old, set)   1
-/**/
-
-#endif
-
+void ngx_spinlock(ngx_atomic_t *lock, ngx_uint_t spin);
 
 #define ngx_trylock(lock)  (*(lock) == 0 && ngx_atomic_cmp_set(lock, 0, 1))
 #define ngx_unlock(lock)    *(lock) = 0