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