2018-04-25 04:54:57 +02:00
|
|
|
/*
|
|
|
|
* 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)
|
|
|
|
{
|
2018-06-13 14:23:08 +02:00
|
|
|
#ifdef CONFIG_DEBUG_MUTEX
|
|
|
|
mutex->file = NULL;
|
|
|
|
mutex->line = 0;
|
|
|
|
#endif
|
2018-04-25 04:54:57 +02:00
|
|
|
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)
|
|
|
|
{
|
2018-06-13 14:23:08 +02:00
|
|
|
#ifdef CONFIG_DEBUG_MUTEX
|
|
|
|
mutex->file = file;
|
|
|
|
mutex->line = line;
|
|
|
|
#endif
|
2018-04-25 04:54:57 +02:00
|
|
|
trace_qemu_mutex_locked(mutex, file, line);
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline void qemu_mutex_pre_unlock(QemuMutex *mutex,
|
|
|
|
const char *file, int line)
|
|
|
|
{
|
2018-06-13 14:23:08 +02:00
|
|
|
#ifdef CONFIG_DEBUG_MUTEX
|
|
|
|
mutex->file = NULL;
|
|
|
|
mutex->line = 0;
|
|
|
|
#endif
|
2018-04-25 04:54:57 +02:00
|
|
|
trace_qemu_mutex_unlock(mutex, file, line);
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|