summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--daemon.c19
-rw-r--r--daemon.h2
-rw-r--r--service.c2
3 files changed, 12 insertions, 11 deletions
diff --git a/daemon.c b/daemon.c
index cd12f92..9eb8bb4 100644
--- a/daemon.c
+++ b/daemon.c
@@ -29,7 +29,6 @@
 #include <string.h>
 #include <sys/stat.h>
 #include <sys/time.h>
-#include <sys/timespec.h>
 #include <sys/wait.h>
 #include <sysexits.h>
 #include <syslog.h>
@@ -266,7 +265,7 @@ int main(int argc, char *argv[]) {
 		struct timespec now = {0};
 		struct timespec timeout = {0};
 		if (timespecisset(&deadline)) {
-			clock_gettime(CLOCK_MONOTONIC_FAST, &now);
+			clock_gettime(CLOCK_MONOTONIC, &now);
 			timespecsub(&deadline, &now, &timeout);
 		}
 		if (timeout.tv_sec < 0 || timeout.tv_nsec < 0) {
@@ -281,13 +280,15 @@ int main(int argc, char *argv[]) {
 
 		// TODO: Handle FIFO and pipes.
 
-		clock_gettime(CLOCK_MONOTONIC_FAST, &now);
-		for (size_t i = 0; i < services.len; ++i) {
-			struct Service *service = &services.ptr[i];
-			if (service->intent != Start) continue;
-			if (service->state == Start) continue;
-			if (timespeccmp(&service->restartDeadline, &now, <=)) {
-				serviceStart(service);
+		if (timespecisset(&deadline)) {
+			clock_gettime(CLOCK_MONOTONIC, &now);
+			for (size_t i = 0; i < services.len; ++i) {
+				struct Service *service = &services.ptr[i];
+				if (service->intent != Start) continue;
+				if (service->state == Start) continue;
+				if (timespeccmp(&service->restartDeadline, &now, <=)) {
+					serviceStart(service);
+				}
 			}
 		}
 
diff --git a/daemon.h b/daemon.h
index 4a9f4d8..db82ee2 100644
--- a/daemon.h
+++ b/daemon.h
@@ -19,7 +19,7 @@
 #include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
-#include <sys/timespec.h>
+#include <sys/time.h>
 #include <unistd.h>
 
 typedef unsigned char byte;
diff --git a/service.c b/service.c
index 35d15f3..12f465f 100644
--- a/service.c
+++ b/service.c
@@ -111,7 +111,7 @@ err:
 }
 
 static void setDeadline(struct Service *service) {
-	clock_gettime(CLOCK_MONOTONIC_FAST, &service->restartDeadline);
+	clock_gettime(CLOCK_MONOTONIC, &service->restartDeadline);
 	timespecadd(
 		&service->restartDeadline, &service->restartInterval,
 		&service->restartDeadline