Here is the problem:
1) we set up for softswithing from the tasklet, by setting up this 
"soft_to_hard" frame.  Which will hardswitch later.
2) receive() returns, propmting deletion of the temporary channel object
3) channel is deleted, but there is a blocked tasklet there, so it needs waking 
up
4) A hard switch is made into that tasklet.  But something goes wrong now.

I spent the afternoon revisiting the theory of hardswitching and softswitching.
Basically, softswitching is only possible if both target and and source 
tasklets have nesting level 0.  But one can always hardswitch.

One thing I don't understand, is why there is the "jump_soft_to_hard" callback? 
 It should be possible just to decide to use hardswitch instead of piggibacking 
the hardswitch onto the softswitching mechanism.  Or is it to avoid saving the 
satck for the source tasklet and unroll its nesting level back?  Hm, probably.

Anyway, I'll try to find out what's wrong.

K 


_______________________________________________
Stackless mailing list
[email protected]
http://www.stackless.com/mailman/listinfo/stackless

Reply via email to