+static void
+pack_tv (struct timeval *tv, SCM seconds, SCM microseconds)
+{
+ tv->tv_sec = scm_to_long (seconds);
+ tv->tv_usec = scm_to_long (microseconds);
+
+ /* Allow usec to be outside the range [0, 999999). */
+ tv->tv_sec += tv->tv_usec / (1000 * 1000);
+ tv->tv_usec %= 1000 * 1000;
+}
+
+static SCM
+unpack_tv (const struct timeval *tv)
+{
+ return scm_cons (scm_from_long (tv->tv_sec), scm_from_long (tv->tv_usec));
+}
+