1*a24ce06cSMichael S. Tsirkin #ifndef SPINLOCK_H_STUB 2*a24ce06cSMichael S. Tsirkin #define SPINLOCK_H_STUB 3*a24ce06cSMichael S. Tsirkin 4*a24ce06cSMichael S. Tsirkin #include <pthread.h> 5*a24ce06cSMichael S. Tsirkin 6*a24ce06cSMichael S. Tsirkin typedef pthread_spinlock_t spinlock_t; 7*a24ce06cSMichael S. Tsirkin spin_lock_init(spinlock_t * lock)8*a24ce06cSMichael S. Tsirkinstatic inline void spin_lock_init(spinlock_t *lock) 9*a24ce06cSMichael S. Tsirkin { 10*a24ce06cSMichael S. Tsirkin int r = pthread_spin_init(lock, 0); 11*a24ce06cSMichael S. Tsirkin assert(!r); 12*a24ce06cSMichael S. Tsirkin } 13*a24ce06cSMichael S. Tsirkin spin_lock(spinlock_t * lock)14*a24ce06cSMichael S. Tsirkinstatic inline void spin_lock(spinlock_t *lock) 15*a24ce06cSMichael S. Tsirkin { 16*a24ce06cSMichael S. Tsirkin int ret = pthread_spin_lock(lock); 17*a24ce06cSMichael S. Tsirkin assert(!ret); 18*a24ce06cSMichael S. Tsirkin } 19*a24ce06cSMichael S. Tsirkin spin_unlock(spinlock_t * lock)20*a24ce06cSMichael S. Tsirkinstatic inline void spin_unlock(spinlock_t *lock) 21*a24ce06cSMichael S. Tsirkin { 22*a24ce06cSMichael S. Tsirkin int ret = pthread_spin_unlock(lock); 23*a24ce06cSMichael S. Tsirkin assert(!ret); 24*a24ce06cSMichael S. Tsirkin } 25*a24ce06cSMichael S. Tsirkin spin_lock_bh(spinlock_t * lock)26*a24ce06cSMichael S. Tsirkinstatic inline void spin_lock_bh(spinlock_t *lock) 27*a24ce06cSMichael S. Tsirkin { 28*a24ce06cSMichael S. Tsirkin spin_lock(lock); 29*a24ce06cSMichael S. Tsirkin } 30*a24ce06cSMichael S. Tsirkin spin_unlock_bh(spinlock_t * lock)31*a24ce06cSMichael S. Tsirkinstatic inline void spin_unlock_bh(spinlock_t *lock) 32*a24ce06cSMichael S. Tsirkin { 33*a24ce06cSMichael S. Tsirkin spin_unlock(lock); 34*a24ce06cSMichael S. Tsirkin } 35*a24ce06cSMichael S. Tsirkin spin_lock_irq(spinlock_t * lock)36*a24ce06cSMichael S. Tsirkinstatic inline void spin_lock_irq(spinlock_t *lock) 37*a24ce06cSMichael S. Tsirkin { 38*a24ce06cSMichael S. Tsirkin spin_lock(lock); 39*a24ce06cSMichael S. Tsirkin } 40*a24ce06cSMichael S. Tsirkin spin_unlock_irq(spinlock_t * lock)41*a24ce06cSMichael S. Tsirkinstatic inline void spin_unlock_irq(spinlock_t *lock) 42*a24ce06cSMichael S. Tsirkin { 43*a24ce06cSMichael S. Tsirkin spin_unlock(lock); 44*a24ce06cSMichael S. Tsirkin } 45*a24ce06cSMichael S. Tsirkin spin_lock_irqsave(spinlock_t * lock,unsigned long f)46*a24ce06cSMichael S. Tsirkinstatic inline void spin_lock_irqsave(spinlock_t *lock, unsigned long f) 47*a24ce06cSMichael S. Tsirkin { 48*a24ce06cSMichael S. Tsirkin spin_lock(lock); 49*a24ce06cSMichael S. Tsirkin } 50*a24ce06cSMichael S. Tsirkin spin_unlock_irqrestore(spinlock_t * lock,unsigned long f)51*a24ce06cSMichael S. Tsirkinstatic inline void spin_unlock_irqrestore(spinlock_t *lock, unsigned long f) 52*a24ce06cSMichael S. Tsirkin { 53*a24ce06cSMichael S. Tsirkin spin_unlock(lock); 54*a24ce06cSMichael S. Tsirkin } 55*a24ce06cSMichael S. Tsirkin 56*a24ce06cSMichael S. Tsirkin #endif 57