xref: /openbmc/linux/tools/virtio/linux/spinlock.h (revision a24ce06c)
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. Tsirkin static 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. Tsirkin static 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. Tsirkin static 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. Tsirkin static 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. Tsirkin static 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. Tsirkin static 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. Tsirkin static 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. Tsirkin static 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. Tsirkin static 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