Towards the end of my tl;dr comment #18 above I wrote:
The solution to this probably has to involve reading the monotonic clock and calling semTake(id, 1) again if the OS returned before the hi-res delay has expired (we might have to do that twice).
So far I don't believe anybody has tried actually coding that fairly obvious solution for any of the OSs where this problem exists.
Towards the end of my tl;dr comment #18 above I wrote:
The solution to this probably has to involve reading the monotonic clock and calling semTake(id, 1) again if the OS returned before the hi-res delay has expired (we might have to do that twice).
So far I don't believe anybody has tried actually coding that fairly obvious solution for any of the OSs where this problem exists.