In "Add support for the IO manager thread" I accidentally spammed part
of "Make sure the threaded threadDelay sleeps at least as long as it
is asked", which is why the ThreadDelay001 test has been failing.
waitForDelayEvent usecs = do
m <- newEmptyMVar
now <- getTicksOfDay
- let target = now + usecs `quot` tick_usecs
+ target <- calculateTarget usecs
atomicModifyIORef pendingDelays (\xs -> (Delay target m : xs, ()))
prodServiceThread
takeMVar m
waitForDelayEventSTM usecs = do
t <- atomically $ newTVar False
now <- getTicksOfDay
- let target = now + usecs `quot` tick_usecs
+ target <- calculateTarget usecs
atomicModifyIORef pendingDelays (\xs -> (DelaySTM target t : xs, ()))
prodServiceThread
return t