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