Am 13.01.2012 14:14, schrieb Stefan Hajnoczi: > Signed-off-by: Stefan Hajnoczi <stefa...@linux.vnet.ibm.com> > --- > Makefile.objs | 1 + > qemu-coroutine-sleep.c | 38 ++++++++++++++++++++++++++++++++++++++ > qemu-coroutine.h | 9 +++++++++ > 3 files changed, 48 insertions(+), 0 deletions(-) > create mode 100644 qemu-coroutine-sleep.c > > diff --git a/Makefile.objs b/Makefile.objs > index 4f6d26c..f4f52e0 100644 > --- a/Makefile.objs > +++ b/Makefile.objs > @@ -13,6 +13,7 @@ oslib-obj-$(CONFIG_POSIX) += oslib-posix.o > qemu-thread-posix.o > ####################################################################### > # coroutines > coroutine-obj-y = qemu-coroutine.o qemu-coroutine-lock.o qemu-coroutine-io.o > +coroutine-obj-y += qemu-coroutine-sleep.o > ifeq ($(CONFIG_UCONTEXT_COROUTINE),y) > coroutine-obj-$(CONFIG_POSIX) += coroutine-ucontext.o > else > diff --git a/qemu-coroutine-sleep.c b/qemu-coroutine-sleep.c > new file mode 100644 > index 0000000..fd65274 > --- /dev/null > +++ b/qemu-coroutine-sleep.c > @@ -0,0 +1,38 @@ > +/* > + * QEMU coroutine sleep > + * > + * Copyright IBM, Corp. 2011 > + * > + * Authors: > + * Stefan Hajnoczi <stefa...@linux.vnet.ibm.com> > + * > + * This work is licensed under the terms of the GNU LGPL, version 2 or later. > + * See the COPYING.LIB file in the top-level directory. > + * > + */ > + > +#include "qemu-coroutine.h" > +#include "qemu-timer.h" > + > +typedef struct CoSleepCB { > + QEMUTimer *ts; > + Coroutine *co; > +} CoSleepCB; > + > +static void co_sleep_cb(void *opaque) > +{ > + CoSleepCB *sleep_cb = opaque; > + > + qemu_free_timer(sleep_cb->ts);
I think you need to call qemu_del_timer() first. Kevin