tools: Use real async.c instead of stubs
It's wrong to call BHs directly, even in tools. The only operations that schedule BHs are called in a loop that (indirectly) contains a call to qemu_bh_poll anyway, so we're not losing the scheduled BHs: Tools either use synchronous functions, which are guaranteed to have completed (including any BHs) when they return; or if they use asynchronous functions, they need to call qemu_aio_wait() or similar functions already today. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
This commit is contained in:
		
							parent
							
								
									e11480db7f
								
							
						
					
					
						commit
						4e59b54586
					
				@ -13,7 +13,7 @@ oslib-obj-$(CONFIG_POSIX) += oslib-posix.o
 | 
				
			|||||||
#######################################################################
 | 
					#######################################################################
 | 
				
			||||||
# block-obj-y is code used by both qemu system emulation and qemu-img
 | 
					# block-obj-y is code used by both qemu system emulation and qemu-img
 | 
				
			||||||
 | 
					
 | 
				
			||||||
block-obj-y = cutils.o cache-utils.o qemu-malloc.o qemu-option.o module.o
 | 
					block-obj-y = cutils.o cache-utils.o qemu-malloc.o qemu-option.o module.o async.o
 | 
				
			||||||
block-obj-y += nbd.o block.o aio.o aes.o qemu-config.o
 | 
					block-obj-y += nbd.o block.o aio.o aes.o qemu-config.o
 | 
				
			||||||
block-obj-$(CONFIG_POSIX) += posix-aio-compat.o
 | 
					block-obj-$(CONFIG_POSIX) += posix-aio-compat.o
 | 
				
			||||||
block-obj-$(CONFIG_LINUX_AIO) += linux-aio.o
 | 
					block-obj-$(CONFIG_LINUX_AIO) += linux-aio.o
 | 
				
			||||||
@ -63,7 +63,7 @@ common-obj-y = $(block-obj-y) blockdev.o
 | 
				
			|||||||
common-obj-y += $(net-obj-y)
 | 
					common-obj-y += $(net-obj-y)
 | 
				
			||||||
common-obj-y += $(qobject-obj-y)
 | 
					common-obj-y += $(qobject-obj-y)
 | 
				
			||||||
common-obj-$(CONFIG_LINUX) += $(fsdev-obj-$(CONFIG_LINUX))
 | 
					common-obj-$(CONFIG_LINUX) += $(fsdev-obj-$(CONFIG_LINUX))
 | 
				
			||||||
common-obj-y += readline.o console.o cursor.o async.o qemu-error.o
 | 
					common-obj-y += readline.o console.o cursor.o qemu-error.o
 | 
				
			||||||
common-obj-y += $(oslib-obj-y)
 | 
					common-obj-y += $(oslib-obj-y)
 | 
				
			||||||
common-obj-$(CONFIG_WIN32) += os-win32.o
 | 
					common-obj-$(CONFIG_WIN32) += os-win32.o
 | 
				
			||||||
common-obj-$(CONFIG_POSIX) += os-posix.o
 | 
					common-obj-$(CONFIG_POSIX) += os-posix.o
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										47
									
								
								qemu-tool.c
									
									
									
									
									
								
							
							
						
						
									
										47
									
								
								qemu-tool.c
									
									
									
									
									
								
							@ -56,53 +56,10 @@ void monitor_print_filename(Monitor *mon, const char *filename)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void async_context_push(void)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void async_context_pop(void)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int get_async_context_id(void)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    return 0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void monitor_protocol_event(MonitorEvent event, QObject *data)
 | 
					void monitor_protocol_event(MonitorEvent event, QObject *data)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
QEMUBH *qemu_bh_new(QEMUBHFunc *cb, void *opaque)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    QEMUBH *bh;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    bh = qemu_malloc(sizeof(*bh));
 | 
					 | 
				
			||||||
    bh->cb = cb;
 | 
					 | 
				
			||||||
    bh->opaque = opaque;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return bh;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int qemu_bh_poll(void)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    return 0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void qemu_bh_schedule(QEMUBH *bh)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    bh->cb(bh->opaque);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void qemu_bh_cancel(QEMUBH *bh)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void qemu_bh_delete(QEMUBH *bh)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    qemu_free(bh);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int qemu_set_fd_handler2(int fd,
 | 
					int qemu_set_fd_handler2(int fd,
 | 
				
			||||||
                         IOCanReadHandler *fd_read_poll,
 | 
					                         IOCanReadHandler *fd_read_poll,
 | 
				
			||||||
                         IOHandler *fd_read,
 | 
					                         IOHandler *fd_read,
 | 
				
			||||||
@ -111,3 +68,7 @@ int qemu_set_fd_handler2(int fd,
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void qemu_notify_event(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user