]>
Commit | Line | Data |
---|---|---|
d5975363 PB |
1 | /* |
2 | * Copyright (c) 2003 Fabrice Bellard | |
3 | * | |
4 | * This library is free software; you can redistribute it and/or | |
5 | * modify it under the terms of the GNU Lesser General Public | |
6 | * License as published by the Free Software Foundation; either | |
7 | * version 2 of the License, or (at your option) any later version. | |
8 | * | |
9 | * This library is distributed in the hope that it will be useful, | |
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
12 | * Lesser General Public License for more details. | |
13 | * | |
14 | * You should have received a copy of the GNU Lesser General Public | |
8167ee88 | 15 | * License along with this library; if not, see <http://www.gnu.org/licenses/> |
d5975363 PB |
16 | */ |
17 | ||
02615337 PM |
18 | /* configure guarantees us that we have pthreads on any host except |
19 | * mingw32, which doesn't support any of the user-only targets. | |
20 | * So we can simply assume we have pthread mutexes here. | |
21 | */ | |
22 | #if defined(CONFIG_USER_ONLY) | |
d5975363 PB |
23 | |
24 | #include <pthread.h> | |
25 | #define spin_lock pthread_mutex_lock | |
26 | #define spin_unlock pthread_mutex_unlock | |
c227f099 | 27 | #define spinlock_t pthread_mutex_t |
d5975363 PB |
28 | #define SPIN_LOCK_UNLOCKED PTHREAD_MUTEX_INITIALIZER |
29 | ||
30 | #else | |
31 | ||
02615337 PM |
32 | /* Empty implementations, on the theory that system mode emulation |
33 | * is single-threaded. This means that these functions should only | |
34 | * be used from code run in the TCG cpu thread, and cannot protect | |
35 | * data structures which might also be accessed from the IO thread | |
36 | * or from signal handlers. | |
37 | */ | |
c227f099 | 38 | typedef int spinlock_t; |
d5975363 PB |
39 | #define SPIN_LOCK_UNLOCKED 0 |
40 | ||
c227f099 | 41 | static inline void spin_lock(spinlock_t *lock) |
d5975363 PB |
42 | { |
43 | } | |
44 | ||
c227f099 | 45 | static inline void spin_unlock(spinlock_t *lock) |
d5975363 PB |
46 | { |
47 | } | |
d5975363 PB |
48 | |
49 | #endif |