- if (tso->block_info.delay > delta) {
- tso->block_info.delay -= delta;
- ready = 0;
- } else {
- tso->block_info.delay = 0;
- ready = 1;
+ {
+#if defined(HAVE_SETITIMER) || defined(mingw32_TARGET_OS)
+ if (tso->block_info.delay > delta) {
+ tso->block_info.delay -= delta;
+ ready = 0;
+ } else {
+ tso->block_info.delay = 0;
+ ready = 1;
+ }
+#else
+ int candidate; /* signed int is intentional */
+ candidate = tso->block_info.target - getourtimeofday();
+ if (candidate < 0) {
+ candidate = 0;
+ }
+ if ((nat)candidate > delta) {
+ ready = 0;
+ } else {
+ ready = 1;
+ }
+#endif
+ break;