Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
meinheld / meinheld / server / atomic.h
Size: Mime:


uint32_t
atomic_cas(volatile uint32_t *mem, uint32_t with, uint32_t cmp)
{
    uint32_t prev;

    __asm__ volatile ("lock; cmpxchgl %1, %2"
                  : "=a" (prev)
                  : "r" (with), "m" (*(mem)), "0"(cmp)
                  : "memory", "cc");
    return prev;
}

#define trylock(lock)  ((lock) == 1 && atomic_cas(&lock, 0, 1))
#define unlock(lock)    (lock) = 1