+#define tvdiff(tv1, tv2) \
+ ((tv1.tv_sec - tv2.tv_sec) * 1000000 + tv1.tv_usec - tv2.tv_usec)
+
+#define tvadd(tv, usec) { \
+ tv.tv_usec += usec; \
+ if (tv.tv_usec >= 1000000) { \
+ tv.tv_sec += 1; \
+ tv.tv_usec -= 1000000; \
+ } \
+}
+
+#define tvsub(tv, usec) { \
+ tv.tv_usec -= usec; \
+ if (tv.tv_usec < 0) { \
+ tv.tv_sec -= 1; \
+ tv.tv_usec += 1000000; \
+ } \
+}
+
+static void wait_to(struct timeval *tv_aim)