File:  [Qemu by Fabrice Bellard] / qemu / qemu-lock.h
Revision 1.1.1.5 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 18:56:17 2018 UTC (2 years, 3 months ago) by root
Branches: qemu, MAIN
CVS tags: qemu1101, qemu1001, qemu1000, qemu0151, HEAD
qemu 0.15.1

    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
   15:  * License along with this library; if not, see <http://www.gnu.org/licenses/>
   16:  */
   17: 
   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)
   23: 
   24: #include <pthread.h>
   25: #define spin_lock pthread_mutex_lock
   26: #define spin_unlock pthread_mutex_unlock
   27: #define spinlock_t pthread_mutex_t
   28: #define SPIN_LOCK_UNLOCKED PTHREAD_MUTEX_INITIALIZER
   29: 
   30: #else
   31: 
   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:  */
   38: typedef int spinlock_t;
   39: #define SPIN_LOCK_UNLOCKED 0
   40: 
   41: static inline void spin_lock(spinlock_t *lock)
   42: {
   43: }
   44: 
   45: static inline void spin_unlock(spinlock_t *lock)
   46: {
   47: }
   48: 
   49: #endif

unix.superglobalmegacorp.com