#define USLEEP (1000000 / 2)
#endif
#define TIMEOUT_SECS 20
+/* LOOPS_MIN is a safety as QEMU clock time sucks.
+ 100000 is 4s natively and 53s in QEMU. */
+#define LOOPS_MIN 500000
#define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0]))
{
enum state found;
time_t timeout = time (NULL) + TIMEOUT_SECS;
+ unsigned loops = 0;
/* Sanity check `1 << enum state' was not misplaced with `enum state'. */
assert (1 << (STATE_FIRST + 1) >= STATE_LAST);
if (((1 << found) & expect_mask) != 0)
return found;
}
- while (time (NULL) < timeout);
+ while (loops++ < LOOPS_MIN || time (NULL) < timeout);
fprintf (stderr, "Found for PID %d state %s but expecting (%s)\n",
(int) pid, state_to_name (found), expect_mask_string);