view src/os/unix/ngx_x86_mutex.h @ 354:eaf1f651cf86

nginx-0.0.7-2004-06-15-11:55:11 import
author Igor Sysoev <igor@sysoev.ru>
date Tue, 15 Jun 2004 07:55:11 +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));
}