Am 18.02.2015 um 14:50 hat Stefan Hajnoczi geschrieben:
> On Tue, Feb 10, 2015 at 11:41:27AM +0100, Kevin Wolf wrote:
> > qemu_coroutine_enter() is now the only user of coroutine_swap(). Both
> > functions are short, so inline it.
> > 
> > Also, using COROUTINE_YIELD is now even more confusing because this code
> > is never called during qemu_coroutine_yield() any more. In fact, this
> > value is never read back, so we can just introduce a new COROUTINE_ENTER
> > which documents the purpose of the task switch better.
> > 
> > Signed-off-by: Kevin Wolf <kw...@redhat.com>
> > ---
> >  include/block/coroutine_int.h |  1 +
> >  qemu-coroutine.c              | 36 +++++++++++++++---------------------
> >  2 files changed, 16 insertions(+), 21 deletions(-)
> > 
> > diff --git a/include/block/coroutine_int.h b/include/block/coroutine_int.h
> > index f133d65..69b83db 100644
> > --- a/include/block/coroutine_int.h
> > +++ b/include/block/coroutine_int.h
> > @@ -29,6 +29,7 @@
> >  #include "block/coroutine.h"
> >  
> >  typedef enum {
> > +    COROUTINE_ENTER = 0,
> 
> This makes the ucontext code harder to understand because
> CoroutineAction values are used with setjmp()/longjmp() in
> qemu_coroutine_switch().
> 
> The longjmp() man page says:
> 
>   If longjmp() is invoked with a second argument of 0, 1 will be
>   returned instead.
> 
> I haven't checked whether or not this causes problems, but the code
> would be simpler if we avoided using 0.

It doesn't, the value is unused where we pass COROUTINE_ENTER. But I can
make it 3 instead.

Kevin

Attachment: pgpgLMcZoFC3W.pgp
Description: PGP signature

Reply via email to