aboutsummaryrefslogtreecommitdiffstats
path: root/src/util.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/util.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/util.c b/src/util.c
index 715aa6b..81926c6 100644
--- a/src/util.c
+++ b/src/util.c
@@ -21,6 +21,7 @@
#include <errno.h>
#include <stdlib.h>
#include <string.h>
+#include <time.h>
#include <unistd.h>
@@ -133,3 +134,21 @@ int dup2atleast(int fd, int atleast)
return new;
}
+
+/**
+ * Perform a timed suspention of the process.
+ * The process resumes when the timer expires,
+ * or when it is interrupted.
+ *
+ * @param ms The number of milliseconds to sleep,
+ * must be less than 1000
+ */
+void msleep(int ms)
+{
+ struct timespec ts;
+ ts.tv_sec = 0;
+ ts.tv_nsec = (long)ms * 1000000L;
+ if (clock_nanosleep(CLOCK_MONOTONIC, 0, &ts, NULL) == ENOTSUP)
+ nanosleep(&ts, NULL);
+}
+