view src/os/unix/ngx_x86_mutex.h @ 96:a23d010f356d

nginx-0.0.1-2003-05-27-16:18:54 import
author Igor Sysoev <igor@sysoev.ru>
date Tue, 27 May 2003 12:18:54 +0000
parents a7e45c45a95c
children
line wrap: on
line source



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