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