[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v8 02/31] main loop: macros to mark GS and I/O functions
From: |
Emanuele Giuseppe Esposito |
Subject: |
[PATCH v8 02/31] main loop: macros to mark GS and I/O functions |
Date: |
Thu, 3 Mar 2022 10:15:47 -0500 |
Righ now, IO_CODE and IO_OR_GS_CODE are nop, as there isn't
really a way to check that a function is only called in I/O.
On the other side, we can use qemu_in_main_thread() to check if
we are in the main loop.
The usage of macros makes easy to extend them in the future without
making changes in all callers. They will also visually help understanding
in which category each function is, without looking at the header.
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
---
include/qemu/main-loop.h | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/include/qemu/main-loop.h b/include/qemu/main-loop.h
index bc42b5939d..7a4d6a0920 100644
--- a/include/qemu/main-loop.h
+++ b/include/qemu/main-loop.h
@@ -269,6 +269,24 @@ bool qemu_mutex_iothread_locked(void);
*/
bool qemu_in_main_thread(void);
+/* Mark and check that the function is part of the global state API. */
+#define GLOBAL_STATE_CODE() \
+ do { \
+ assert(qemu_in_main_thread()); \
+ } while (0)
+
+/* Mark and check that the function is part of the I/O API. */
+#define IO_CODE() \
+ do { \
+ /* nop */ \
+ } while (0)
+
+/* Mark and check that the function is part of the "I/O OR GS" API. */
+#define IO_OR_GS_CODE() \
+ do { \
+ /* nop */ \
+ } while (0)
+
/**
* qemu_mutex_lock_iothread: Lock the main loop mutex.
*
--
2.31.1
- [PATCH v8 00/31] block layer: split block APIs in global state and I/O, Emanuele Giuseppe Esposito, 2022/03/03
- [PATCH v8 01/31] main-loop.h: introduce qemu_in_main_thread(), Emanuele Giuseppe Esposito, 2022/03/03
- [PATCH v8 02/31] main loop: macros to mark GS and I/O functions,
Emanuele Giuseppe Esposito <=
- [PATCH v8 04/31] assertions for block global state API, Emanuele Giuseppe Esposito, 2022/03/03
- [PATCH v8 08/31] block/block-backend.c: assertions for block-backend, Emanuele Giuseppe Esposito, 2022/03/03
- [PATCH v8 06/31] block/export/fuse.c: allow writable exports to take RESIZE permission, Emanuele Giuseppe Esposito, 2022/03/03
- [PATCH v8 07/31] include/sysemu/block-backend: split header into I/O and global state (GS) API, Emanuele Giuseppe Esposito, 2022/03/03
- [PATCH v8 05/31] IO_CODE and IO_OR_GS_CODE for block I/O API, Emanuele Giuseppe Esposito, 2022/03/03
- [PATCH v8 03/31] include/block/block: split header into I/O and global state API, Emanuele Giuseppe Esposito, 2022/03/03
- [PATCH v8 09/31] IO_CODE and IO_OR_GS_CODE for block-backend I/O API, Emanuele Giuseppe Esposito, 2022/03/03
- [PATCH v8 10/31] block.c: assertions to the block layer permissions API, Emanuele Giuseppe Esposito, 2022/03/03
- [PATCH v8 12/31] assertions for block_int global state API, Emanuele Giuseppe Esposito, 2022/03/03
- [PATCH v8 11/31] include/block/block_int: split header into I/O and global state API, Emanuele Giuseppe Esposito, 2022/03/03