| /* |
| * 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/typedefs.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 |