On 03/07/11 21:10, Michael Roth wrote: > To be able to use qemu_mod_timer() and friends to register timeout > events for virtagent's qemu-va tool, we need to do the following: > > Move several blocks of code out of cpus.c that handle initialization > of qemu's io_thread_fd and working with it via > qemu_notify_event()/qemu_event_read()/etc, and make them accessible > as backend functions to both the emulator code and qemu-tool.c via > wrapper functions within cpus.c and qemu-tool.c, respectively. These > have been added to qemu-ioh.c, where similar treatment was given to > qemu_set_fd_handler() and friends. > > Some of these wrapper functions lack declarations when being > built into tools, so we add those via qemu-tool.h, which can be included > by a tool to access them. With these changes we can drive timers in a > tool linking it against qemu-timer.o and then implementing something > similar to the main i/o loop in vl.c: >
[snip] > diff --git a/qemu-ioh.c b/qemu-ioh.c > index cc71470..5c3f94c 100644 > --- a/qemu-ioh.c > +++ b/qemu-ioh.c > @@ -113,3 +117,94 @@ void qemu_process_fd_handlers2(void *ioh_record_list, > const fd_set *rfds, > } > } > } > + > +#ifndef _WIN32 > +void iothread_event_increment(int *io_thread_fd) Please move these functions into posix/w32 specific files so we don't get anymore ugly #ifdefs. It would be good if we could use a wrapper struct as well to hide the different data types so we don't need #ifdefs in the calling code as well. Cheers, Jes