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