Annotation of qemu/qemu-lock.h, revision 1.1.1.5

1.1       root        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
1.1.1.2   root       15:  * License along with this library; if not, see <http://www.gnu.org/licenses/>
1.1       root       16:  */
                     17: 
1.1.1.5 ! root       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)
1.1       root       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: 
1.1.1.5 ! root       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:  */
1.1       root       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