xref: /OK3568_Linux_fs/kernel/tools/virtio/linux/spinlock.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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*4882a593Smuzhiyun static 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*4882a593Smuzhiyun static 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*4882a593Smuzhiyun static 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*4882a593Smuzhiyun static 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*4882a593Smuzhiyun static 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*4882a593Smuzhiyun static 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*4882a593Smuzhiyun static 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*4882a593Smuzhiyun static 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*4882a593Smuzhiyun static 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