Revision 99a0949b qemu-lock.h
b/qemu-lock.h | ||
---|---|---|
28 | 28 |
#include <pthread.h> |
29 | 29 |
#define spin_lock pthread_mutex_lock |
30 | 30 |
#define spin_unlock pthread_mutex_unlock |
31 |
#define spinlock_t pthread_mutex_t
|
|
31 |
#define a_spinlock pthread_mutex_t
|
|
32 | 32 |
#define SPIN_LOCK_UNLOCKED PTHREAD_MUTEX_INITIALIZER |
33 | 33 |
|
34 | 34 |
#else |
35 | 35 |
|
36 | 36 |
#if defined(__hppa__) |
37 | 37 |
|
38 |
typedef int spinlock_t[4];
|
|
38 |
typedef int a_spinlock[4];
|
|
39 | 39 |
|
40 | 40 |
#define SPIN_LOCK_UNLOCKED { 1, 1, 1, 1 } |
41 | 41 |
|
42 |
static inline void resetlock (spinlock_t *p)
|
|
42 |
static inline void resetlock (a_spinlock *p)
|
|
43 | 43 |
{ |
44 | 44 |
(*p)[0] = (*p)[1] = (*p)[2] = (*p)[3] = 1; |
45 | 45 |
} |
46 | 46 |
|
47 | 47 |
#else |
48 | 48 |
|
49 |
typedef int spinlock_t;
|
|
49 |
typedef int a_spinlock;
|
|
50 | 50 |
|
51 | 51 |
#define SPIN_LOCK_UNLOCKED 0 |
52 | 52 |
|
53 |
static inline void resetlock (spinlock_t *p)
|
|
53 |
static inline void resetlock (a_spinlock *p)
|
|
54 | 54 |
{ |
55 | 55 |
*p = SPIN_LOCK_UNLOCKED; |
56 | 56 |
} |
... | ... | |
171 | 171 |
return (void *)a; |
172 | 172 |
} |
173 | 173 |
|
174 |
static inline int testandset (spinlock_t *p)
|
|
174 |
static inline int testandset (a_spinlock *p)
|
|
175 | 175 |
{ |
176 | 176 |
unsigned int ret; |
177 | 177 |
p = ldcw_align(p); |
... | ... | |
215 | 215 |
#endif |
216 | 216 |
|
217 | 217 |
#if defined(CONFIG_USER_ONLY) |
218 |
static inline void spin_lock(spinlock_t *lock)
|
|
218 |
static inline void spin_lock(a_spinlock *lock)
|
|
219 | 219 |
{ |
220 | 220 |
while (testandset(lock)); |
221 | 221 |
} |
222 | 222 |
|
223 |
static inline void spin_unlock(spinlock_t *lock)
|
|
223 |
static inline void spin_unlock(a_spinlock *lock)
|
|
224 | 224 |
{ |
225 | 225 |
resetlock(lock); |
226 | 226 |
} |
227 | 227 |
|
228 |
static inline int spin_trylock(spinlock_t *lock)
|
|
228 |
static inline int spin_trylock(a_spinlock *lock)
|
|
229 | 229 |
{ |
230 | 230 |
return !testandset(lock); |
231 | 231 |
} |
232 | 232 |
#else |
233 |
static inline void spin_lock(spinlock_t *lock)
|
|
233 |
static inline void spin_lock(a_spinlock *lock)
|
|
234 | 234 |
{ |
235 | 235 |
} |
236 | 236 |
|
237 |
static inline void spin_unlock(spinlock_t *lock)
|
|
237 |
static inline void spin_unlock(a_spinlock *lock)
|
|
238 | 238 |
{ |
239 | 239 |
} |
240 | 240 |
|
241 |
static inline int spin_trylock(spinlock_t *lock)
|
|
241 |
static inline int spin_trylock(a_spinlock *lock)
|
|
242 | 242 |
{ |
243 | 243 |
return 1; |
244 | 244 |
} |
Also available in: Unified diff