nginx/src/os/unix/ngx_x86_mutex.h
2003-04-28 15:06:39 +00:00

31 lines
438 B
C

typedef struct {
int lock;
} ngx_mutex_t;
static inline int ngx_spin_lock(ngx_mutex_t *m, int count)
{
int lock;
__asm__ __volatile("
get_lock:
mov $1, %1
xchg %1, %2
cmp $0, %1
jne spin_lock
spin_lock:
cmp $0, %3
je failed
dec %3
rep nop
cmp $0, %2
jne spin_lock
": "=q" (lock), "m" (m->lock), "q" (count));
}