On Fri Sep 22 18:34:49 2023 +0000, Yuxuan Shui wrote:
I didn't try that, but I was worried doing that means releasing the lock could be blocking. I felt that would be unexpected.
It's "blocking" in the sense that it's waiting on an unfair spinlock. That's not great, of course, but it's also no worse than what we do in RtlWakeAddressSingle(), and that seems to be performant enough.
More generally I'm not sure if there's a *problem* if wake operations on a contended lock aren't immediate? I can only imagine the subsequent syscall is going to be the more important part.
I'd definitely feel more comfortable if we can just grab the spinlock around everything, and thus simplify the code a lot. If we can't, so be it, but...