> if a process p sleeps on r for condition f, and there are two wakeup(r), only > the first wakeup does anything because by the time of the second, > r doesn't refer to p any more. were you wanting r to retain memory of p so > the second wakeup would ... presumably still not do anything? (because > p wouldn't be in the right state.) if so, i don't see what you've gained. > i must be missing something.
i agree with you. i'm the one who is missing something. the case i thought i was seeing — double wakeup leading to a panic — can't be happening. there's something else going on. thanks for the thoughtful responses to a dumb question. btw, isn't the lockstats.locks++ in taslock:/^lock broken since >1 loads can happen simultaneously leading to undercounting? - erik
