1 /* 2 * Common qemu-thread implementation header file. 3 * 4 * Copyright Red Hat, Inc. 2018 5 * 6 * Authors: 7 * Peter Xu <peterx@redhat.com>, 8 * 9 * This work is licensed under the terms of the GNU GPL, version 2 or later. 10 * See the COPYING file in the top-level directory. 11 */ 12 13 #ifndef QEMU_THREAD_COMMON_H 14 #define QEMU_THREAD_COMMON_H 15 16 #include "qemu/typedefs.h" 17 #include "qemu/thread.h" 18 #include "trace.h" 19 20 static inline void qemu_mutex_post_init(QemuMutex *mutex) 21 { 22 #ifdef CONFIG_DEBUG_MUTEX 23 mutex->file = NULL; 24 mutex->line = 0; 25 #endif 26 mutex->initialized = true; 27 } 28 29 static inline void qemu_mutex_pre_lock(QemuMutex *mutex, 30 const char *file, int line) 31 { 32 trace_qemu_mutex_lock(mutex, file, line); 33 } 34 35 static inline void qemu_mutex_post_lock(QemuMutex *mutex, 36 const char *file, int line) 37 { 38 #ifdef CONFIG_DEBUG_MUTEX 39 mutex->file = file; 40 mutex->line = line; 41 #endif 42 trace_qemu_mutex_locked(mutex, file, line); 43 } 44 45 static inline void qemu_mutex_pre_unlock(QemuMutex *mutex, 46 const char *file, int line) 47 { 48 #ifdef CONFIG_DEBUG_MUTEX 49 mutex->file = NULL; 50 mutex->line = 0; 51 #endif 52 trace_qemu_mutex_unlock(mutex, file, line); 53 } 54 55 #endif 56