blob: a8ed2eee2f9699eafbcf65691c54918ba385c96b [file] [log] [blame]
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));
}