From 03ff3ca30f29f422ebfd10d2bee1393efb4d4f7a Mon Sep 17 00:00:00 2001 From: aliguori Date: Mon, 15 Sep 2008 15:51:35 +0000 Subject: Use common objects for qemu-img and qemu-nbd Right now, we sprinkle #if defined(QEMU_IMG) && defined(QEMU_NBD) all over the code. It's ugly and causes us to have to build multiple object files for linking against qemu and the tools. This patch introduces a new file, qemu-tool.c which contains enough for qemu-img, qemu-nbd, and QEMU to all share the same objects. This also required getting qemu-nbd to be a bit more Windows friendly. I also changed the Windows block-raw to use normal IO instead of overlapping IO since we don't actually do AIO yet on Windows. I changed the various #if 0's to #if WIN32_AIO to make it easier for someone to eventually fix AIO on Windows. After this patch, there are no longer any #ifdef's related to qemu-img and qemu-nbd. Signed-off-by: Anthony Liguori git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5226 c046a42c-6fe2-441c-8c8c-71466251a162 --- qemu-tool.c | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 qemu-tool.c (limited to 'qemu-tool.c') diff --git a/qemu-tool.c b/qemu-tool.c new file mode 100644 index 0000000..63e2056 --- /dev/null +++ b/qemu-tool.c @@ -0,0 +1,83 @@ +/* + * Compatibility for qemu-img/qemu-nbd + * + * Copyright IBM, Corp. 2008 + * + * Authors: + * Anthony Liguori + * + * This work is licensed under the terms of the GNU GPL, version 2. See + * the COPYING file in the top-level directory. + * + */ + +#include "qemu-common.h" +#include "console.h" +#include "sysemu.h" +#include "qemu-timer.h" + +#include + +QEMUClock *rt_clock; + +struct QEMUBH +{ + QEMUBHFunc *cb; + void *opaque; +}; + +void term_printf(const char *fmt, ...) +{ +} + +void term_print_filename(const char *filename) +{ +} + +QEMUBH *qemu_bh_new(QEMUBHFunc *cb, void *opaque) +{ + QEMUBH *bh; + + bh = qemu_malloc(sizeof(*bh)); + if (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, + IOCanRWHandler *fd_read_poll, + IOHandler *fd_read, + IOHandler *fd_write, + void *opaque) +{ + return 0; +} + +int64_t qemu_get_clock(QEMUClock *clock) +{ + struct timeval tv; + gettimeofday(&tv, NULL); + return (tv.tv_sec * 1000000000LL + (tv.tv_usec * 1000)) / 1000000; +} -- cgit v1.1