#include "qemu/lockcnt.h"
#include "qemu/thread.h"
#include "qemu/timer.h"
-#include "block/graph-lock.h"
-#include "hw/core/qdev.h"
+struct MemReentrancyGuard;
typedef struct AioHandler AioHandler;
typedef QLIST_HEAD(, AioHandler) AioHandlerList;
* of nodes and edges from block graph while some
* other thread is traversing it.
*/
- BdrvGraphRWlock *bdrv_graph;
+ struct BdrvGraphRWlock *bdrv_graph;
/* The list of registered AIO handlers. Protected by ctx->list_lock. */
AioHandlerList aio_handlers;
* device-reentrancy issues
*/
QEMUBH *aio_bh_new_full(AioContext *ctx, QEMUBHFunc *cb, void *opaque,
- const char *name, MemReentrancyGuard *reentrancy_guard);
+ const char *name, struct MemReentrancyGuard *reentrancy_guard);
/**
* aio_bh_new: Allocate a new bottom half structure
#define BLOCK_COPY_H
#include "block/block-common.h"
+#include "block/graph-lock.h"
#include "qemu/progress_meter.h"
/* All APIs are thread-safe */
#define BLOCK_GLOBAL_STATE_H
#include "qemu/aiocb.h"
+#include "block/graph-lock.h"
#include "block/block-common.h"
#include "qemu/coroutine.h"
#include "qemu/transactions.h"
#include "qemu/aiocb.h"
#include "block/aio-wait.h"
#include "block/block-common.h"
+#include "block/graph-lock.h"
#include "qemu/coroutine.h"
#include "qemu/iov.h"
#define BLOCK_DIRTY_BITMAP_H
#include "block/block-common.h"
+#include "block/graph-lock.h"
#include "qapi/qapi-types-block-core.h"
#include "qemu/hbitmap.h"
#include "qemu/atomic.h"
#include "qemu/queue.h"
#include "qemu/bitmap.h"
+#include "qemu/mem-reentrancy.h"
#include "qemu/rcu.h"
#include "qemu/rcu_queue.h"
#include "qom/object.h"
QLIST_ENTRY(NamedClockList) node;
};
-typedef struct MemReentrancyGuard {
- bool engaged_in_io;
-} MemReentrancyGuard;
-
-
typedef QLIST_HEAD(, NamedGPIOList) NamedGPIOListHead;
typedef QLIST_HEAD(, NamedClockList) NamedClockListHead;
typedef QLIST_HEAD(, BusState) BusStateHead;
#include "qemu/progress_meter.h"
#include "qemu/coroutine.h"
#include "block/aio.h"
+#include "block/graph-lock.h"
typedef struct JobDriver JobDriver;
typedef struct JobTxn JobTxn;
#define qemu_bh_new(cb, opaque) \
qemu_bh_new_full((cb), (opaque), (stringify(cb)), NULL)
QEMUBH *qemu_bh_new_full(QEMUBHFunc *cb, void *opaque, const char *name,
- MemReentrancyGuard *reentrancy_guard);
+ struct MemReentrancyGuard *reentrancy_guard);
void qemu_bh_schedule_idle(QEMUBH *bh);
enum {
--- /dev/null
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#ifndef QEMU_MEM_REENTRANCY_H
+#define QEMU_MEM_REENTRANCY_H 1
+
+typedef struct MemReentrancyGuard {
+ bool engaged_in_io;
+} MemReentrancyGuard;
+
+#endif
#include "qobject/qdict.h"
#include "qapi/qmp/qerror.h"
#include "qemu/error-report.h"
+#include "qemu/mem-reentrancy.h"
#include "qemu/sockets.h"
#include "qemu/cutils.h"
#include "qemu/config-file.h"
}
QEMUBH *qemu_bh_new_full(QEMUBHFunc *cb, void *opaque, const char *name,
- MemReentrancyGuard *reentrancy_guard)
+ struct MemReentrancyGuard *reentrancy_guard)
{
QEMUBH *bh = g_new(QEMUBH, 1);
#include "block/thread-pool.h"
#include "block/graph-lock.h"
#include "qemu/main-loop.h"
+#include "qemu/mem-reentrancy.h"
#include "qemu/atomic.h"
#include "qemu/lockcnt.h"
#include "qemu/rcu_queue.h"