Break-out logging and time-related functions into lib modules
[khatus.git] / x5 / khatus_lib_time.c
diff --git a/x5/khatus_lib_time.c b/x5/khatus_lib_time.c
new file mode 100644 (file)
index 0000000..ba74226
--- /dev/null
@@ -0,0 +1,31 @@
+#include <errno.h>
+#include <math.h>
+#include <stdio.h>
+#include <string.h>
+#include <time.h>
+
+#include "khatus_lib_log.h"
+#include "khatus_lib_time.h"
+
+void
+snooze(struct timespec *t)
+{
+       struct timespec remainder;
+       int result;
+
+       result = nanosleep(t, &remainder);
+
+       if (result < 0) {
+               if (errno == EINTR) {
+                       warn(
+                           "nanosleep interrupted. Remainder: "
+                           "{ tv_sec = %ld, tv_nsec = %ld }",
+                           remainder.tv_sec, remainder.tv_nsec);
+                       /* No big deal if we occasionally sleep less,
+                        * so not attempting to correct after an interruption.
+                        */
+               } else {
+                       fatal("nanosleep: %s\n", strerror(errno));
+               }
+       }
+}
This page took 0.028254 seconds and 4 git commands to generate.