[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 08/11] aio-win32: Implement aio_{disable, enable}
From: |
Fam Zheng |
Subject: |
[Qemu-devel] [PATCH v2 08/11] aio-win32: Implement aio_{disable, enable}_clients |
Date: |
Wed, 29 Jul 2015 12:42:11 +0800 |
Signed-off-by: Fam Zheng <address@hidden>
---
aio-win32.c | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/aio-win32.c b/aio-win32.c
index f5ecf57..1f6a3f0 100644
--- a/aio-win32.c
+++ b/aio-win32.c
@@ -28,6 +28,7 @@ struct AioHandler {
GPollFD pfd;
int deleted;
void *opaque;
+ int disable_cnt;
int type;
QLIST_ENTRY(AioHandler) node;
};
@@ -309,7 +310,7 @@ bool aio_poll(AioContext *ctx, bool blocking)
/* fill fd sets */
count = 0;
QLIST_FOREACH(node, &ctx->aio_handlers, node) {
- if (!node->deleted && node->io_notify) {
+ if (!node->deleted && node->io_notify && !node->disable_cnt) {
events[count++] = event_notifier_get_handle(node->e);
}
}
@@ -368,3 +369,17 @@ bool aio_poll(AioContext *ctx, bool blocking)
aio_context_release(ctx);
return progress;
}
+
+void aio_disable_enable_clients(AioContext *ctx, int clients_mask,
+ bool is_disable)
+{
+ AioHandler *node;
+ aio_context_acquire(ctx);
+
+ QLIST_FOREACH(node, &ctx->aio_handlers, node) {
+ if (!node->deleted && node->type & clients_mask) {
+ node->disable_cnt += is_disable ? 1 : -1;
+ }
+ }
+ aio_context_release(ctx);
+}
--
2.4.3
- [Qemu-devel] [PATCH v2 00/11] aio: Introduce handler type to fix nested aio_poll for dataplane, Fam Zheng, 2015/07/29
- [Qemu-devel] [PATCH v2 02/11] aio: Save type to AioHandler, Fam Zheng, 2015/07/29
- [Qemu-devel] [PATCH v2 04/11] nbd: Mark fd handlers client type as "nbd server", Fam Zheng, 2015/07/29
- [Qemu-devel] [PATCH v2 01/11] aio: Introduce "type" in aio_set_fd_handler and aio_set_event_notifier, Fam Zheng, 2015/07/29
- [Qemu-devel] [PATCH v2 03/11] block: Mark fd handlers as "protocol", Fam Zheng, 2015/07/29
- [Qemu-devel] [PATCH v2 05/11] aio: Mark ctx->notifier's client type as "context", Fam Zheng, 2015/07/29
- [Qemu-devel] [PATCH v2 06/11] dataplane: Mark host notifiers' client type as "dataplane", Fam Zheng, 2015/07/29
- [Qemu-devel] [PATCH v2 07/11] aio-posix: introduce aio_{disable, enable}_clients, Fam Zheng, 2015/07/29
- [Qemu-devel] [PATCH v2 08/11] aio-win32: Implement aio_{disable, enable}_clients,
Fam Zheng <=
- [Qemu-devel] [PATCH v2 09/11] block: Introduce bdrv_aio_poll, Fam Zheng, 2015/07/29
- [Qemu-devel] [PATCH v2 10/11] block: Replace nested aio_poll with bdrv_aio_poll, Fam Zheng, 2015/07/29
- [Qemu-devel] [PATCH v2 11/11] block: Only poll block layer fds in bdrv_aio_poll, Fam Zheng, 2015/07/29
- Re: [Qemu-devel] [PATCH v2 11/11] block: Only poll block layer fds in bdrv_aio_poll, Paolo Bonzini, 2015/07/29
- Re: [Qemu-devel] [PATCH v2 11/11] block: Only poll block layer fds in bdrv_aio_poll, Paolo Bonzini, 2015/07/29
- Re: [Qemu-devel] [PATCH v2 11/11] block: Only poll block layer fds in bdrv_aio_poll, Fam Zheng, 2015/07/29
- Re: [Qemu-devel] [PATCH v2 11/11] block: Only poll block layer fds in bdrv_aio_poll, Paolo Bonzini, 2015/07/29
- Re: [Qemu-devel] [PATCH v2 11/11] block: Only poll block layer fds in bdrv_aio_poll, Fam Zheng, 2015/07/29
- Re: [Qemu-devel] [PATCH v2 11/11] block: Only poll block layer fds in bdrv_aio_poll, Paolo Bonzini, 2015/07/29
- Re: [Qemu-devel] [PATCH v2 11/11] block: Only poll block layer fds in bdrv_aio_poll, Fam Zheng, 2015/07/29