view src/os/unix/ngx_x86_mutex.h @ 402:f209f3391020

nginx-0.0.9-2004-07-28-20:16:50 import
author Igor Sysoev <igor@sysoev.ru>
date Wed, 28 Jul 2004 16:16:50 +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));
}