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)); | |
} |