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/thread.h" 17 #include "trace.h" 18 19 static inline void qemu_mutex_post_init(QemuMutex *mutex) 20 { 21 #ifdef CONFIG_DEBUG_MUTEX 22 mutex->file = NULL; 23 mutex->line = 0; 24 #endif 25 mutex->initialized = true; 26 } 27 28 static inline void qemu_mutex_pre_lock(QemuMutex *mutex, 29 const char *file, int line) 30 { 31 trace_qemu_mutex_lock(mutex, file, line); 32 } 33 34 static inline void qemu_mutex_post_lock(QemuMutex *mutex, 35 const char *file, int line) 36 { 37 #ifdef CONFIG_DEBUG_MUTEX 38 mutex->file = file; 39 mutex->line = line; 40 #endif 41 trace_qemu_mutex_locked(mutex, file, line); 42 } 43 44 static inline void qemu_mutex_pre_unlock(QemuMutex *mutex, 45 const char *file, int line) 46 { 47 #ifdef CONFIG_DEBUG_MUTEX 48 mutex->file = NULL; 49 mutex->line = 0; 50 #endif 51 trace_qemu_mutex_unlock(mutex, file, line); 52 } 53 54 #endif 55