chiark / gitweb /
clock: Fix spinning
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 20 Mar 2021 19:20:50 +0000 (19:20 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 20 Mar 2021 21:52:49 +0000 (21:52 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/clock.rs

index aa8faa2dd863d033db98f3ce5b42f8713b4bbe52..ce9a065f37772c78368264f71871d8fbb126631d 100644 (file)
@@ -297,8 +297,6 @@ impl ThreadState {
   #[throws(IE)]
   fn run(mut self) {
     loop {
-      // xxx this seems to spin
-
       match self.next_wakeup {
         Some(wakeup) => {
           let timeout = wakeup - now()?;
@@ -341,10 +339,11 @@ impl ThreadState {
             || internal_error_bydebug(&state)
           )?.expires - now;
           state.users[user].remaining = remaining;
-          Some(libc::timespec {
+          let pause: TimeSpec = libc::timespec {
             tv_sec: 0,
             tv_nsec: remaining.tv_nsec(),
-          }.into())
+          }.into();
+          Some(pause + now)
         } else {
           None
         };