|  | /* | 
|  | * Common qemu-thread implementation header file. | 
|  | * | 
|  | * Copyright Red Hat, Inc. 2018 | 
|  | * | 
|  | * Authors: | 
|  | *  Peter Xu <peterx@redhat.com>, | 
|  | * | 
|  | * This work is licensed under the terms of the GNU GPL, version 2 or later. | 
|  | * See the COPYING file in the top-level directory. | 
|  | */ | 
|  |  | 
|  | #ifndef QEMU_THREAD_COMMON_H | 
|  | #define QEMU_THREAD_COMMON_H | 
|  |  | 
|  | #include "qemu/thread.h" | 
|  | #include "trace.h" | 
|  |  | 
|  | static inline void qemu_mutex_post_init(QemuMutex *mutex) | 
|  | { | 
|  | #ifdef CONFIG_DEBUG_MUTEX | 
|  | mutex->file = NULL; | 
|  | mutex->line = 0; | 
|  | #endif | 
|  | mutex->initialized = true; | 
|  | } | 
|  |  | 
|  | static inline void qemu_mutex_pre_lock(QemuMutex *mutex, | 
|  | const char *file, int line) | 
|  | { | 
|  | trace_qemu_mutex_lock(mutex, file, line); | 
|  | } | 
|  |  | 
|  | static inline void qemu_mutex_post_lock(QemuMutex *mutex, | 
|  | const char *file, int line) | 
|  | { | 
|  | #ifdef CONFIG_DEBUG_MUTEX | 
|  | mutex->file = file; | 
|  | mutex->line = line; | 
|  | #endif | 
|  | trace_qemu_mutex_locked(mutex, file, line); | 
|  | } | 
|  |  | 
|  | static inline void qemu_mutex_pre_unlock(QemuMutex *mutex, | 
|  | const char *file, int line) | 
|  | { | 
|  | #ifdef CONFIG_DEBUG_MUTEX | 
|  | mutex->file = NULL; | 
|  | mutex->line = 0; | 
|  | #endif | 
|  | trace_qemu_mutex_unlock(mutex, file, line); | 
|  | } | 
|  |  | 
|  | #endif |