I don't think either splhi fixes the problem ... it only hides it for
the 99.999999999% cases.
Phil;
erik quanstrom wrote:
schedinit only runs once and sleep runs all the time. That's the part
I don't get.
gotolabel in sleep sends you back to the
setlabel at the top of schedinit.
But you might have found something, I sure wish I understood it all better :-)
i'm not entirely convinced that the problem isn't the fact that splhi()
doesn't do anything.
here's what i wonder:
- does richard miller's alternate implementation of wakeup
solve this problem.
- does changing spl* to manipulation of a per-cpu lock solve the problem?
sometimes preventing anything else from running on your mach is
exactly what you want.
in any event, given the long history with sleep/wakeup, changes should
be justified with a promula model. the current model omits the spl*
and the second lock. (http://swtch.com/spin/sleep_wakeup.txt).
- erik