>however the invarient that there is exactly one wakeup for >every sleep requires some careful accounting that >can be equally error prone.care not to double-interrupt.
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.
