Il 07/10/2014 10:58, Dr. David Alan Gilbert ha scritto:
> 
>>> > > +    if (exitcode & LOADVM_EXITCODE_QUITPARENT) {
>>> > > +        DPRINTF("loadvm_handlers_state_main: End of loop with 
>>> > > QUITPARENT");
>>> > > +        exitcode &= ~LOADVM_EXITCODE_QUITPARENT;
>>> > > +        exitcode &= LOADVM_EXITCODE_QUITLOOP;
>> > 
>> > Either you want |=, or the first &= is useless.
> Ooh nicely spotted; yes that should be |=  - now I need to figure out why this
> didn't break things.
> 
> The idea is we have:
>  1   outer loadvm_state loop
>  2      receives packaged command
>  3        inner_loadvm_state loop
>  4          receives handle_listen
>  5          < QUITPARENT
>  6        < QUITLOOP
>  7       < QUITLOOP
>  8   exits
> 
> so QUITPARENT causes it's parent to exit, and to do that
> the inner loop transforms QUITPARENT into QUITLOOP as it's
> exit.

Yes, that was my understanding as well.

We have only two nested loops, but if we had three, should it be
QUIT_PARENT or QUIT_ALL?

Paolo

Reply via email to