xref: /openbmc/qemu/util/qemu-thread-common.h (revision 6d809e7d)
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 
qemu_mutex_post_init(QemuMutex * mutex)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 
qemu_mutex_pre_lock(QemuMutex * mutex,const char * file,int line)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 
qemu_mutex_post_lock(QemuMutex * mutex,const char * file,int line)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 
qemu_mutex_pre_unlock(QemuMutex * mutex,const char * file,int line)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