Mercurial > hg > nginx-quic
comparison 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 |
comparison
equal
deleted
inserted
replaced
372:c9fdfccebc49 | 373:018569a8f09c |
---|---|
1 #ifndef _NGX_ATOMIC_H_INCLUDED_ | |
2 #define _NGX_ATOMIC_H_INCLUDED_ | |
3 | |
4 | |
5 #include <ngx_config.h> | |
6 #include <ngx_core.h> | |
7 | |
8 | |
9 #define ngx_atomic_inc(p) InterlockedIncrement((long *) p) | |
10 #define ngx_atomic_dec(p) InterlockedDecrement((long *) p) | |
11 | |
12 | |
13 #if defined( __WATCOMC__ ) || defined( __BORLANDC__ ) | |
14 | |
15 #define ngx_atomic_cmp_set(lock, old, set) \ | |
16 (InterlockedCompareExchange((long *) lock, set, old) == old) | |
17 | |
18 #else | |
19 | |
20 #define ngx_atomic_cmp_set(lock, old, set) \ | |
21 (InterlockedCompareExchange((void **) lock, (void *) set, (void *) old) \ | |
22 == (void *) old) | |
23 | |
24 #endif | |
25 | |
26 | |
27 void ngx_spinlock(ngx_atomic_t *lock, ngx_uint_t spin); | |
28 | |
29 #define ngx_trylock(lock) (*(lock) == 0 && ngx_atomic_cmp_set(lock, 0, 1)) | |
30 #define ngx_unlock(lock) *(lock) = 0 | |
31 | |
32 | |
33 #endif /* _NGX_ATOMIC_H_INCLUDED_ */ |