package time
import (
- "syscall"
- "sync"
"container/heap"
+ "sync"
)
// The Timer type represents a single event.
dt = maxSleepTime
}
timerMutex.Unlock()
- syscall.Sleep(dt)
+ sysSleep(dt)
timerMutex.Lock()
if currentSleeper != sleeperId {
// Another sleeper has been started, making this one redundant.
// TODO(cw): use monotonic-time once it's available
end := t + ns
for t < end {
- errno := syscall.Sleep(end - t)
- if errno != 0 && errno != syscall.EINTR {
- return 0, os.NewSyscallError("sleep", errno)
+ err := sysSleep(end - t)
+ if err != nil {
+ return 0, err
}
t = Nanoseconds()
}
return t, nil
}
+
+func sysSleep(t int64) os.Error {
+ errno := syscall.Sleep(t)
+ if errno != 0 && errno != syscall.EINTR {
+ return os.NewSyscallError("sleep", errno)
+ }
+ return nil
+}