Switch to timespec for timeouts
Can be passed to ppoll(2) directly.
This commit is contained in:
parent
5f47019106
commit
04ca84acda
11
daemon.c
11
daemon.c
@ -27,6 +27,7 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/timespec.h>
|
||||
#include <sysexits.h>
|
||||
#include <syslog.h>
|
||||
#include <unistd.h>
|
||||
@ -43,7 +44,7 @@
|
||||
|
||||
#define WS " \t"
|
||||
|
||||
int restartInterval = 1000;
|
||||
struct timespec restartInterval = { .tv_sec = 1 };
|
||||
struct Set256 stopExits;
|
||||
|
||||
static void configerr(bool exit, const char *format, ...) {
|
||||
@ -119,6 +120,12 @@ static void parseExits(char *list) {
|
||||
}
|
||||
}
|
||||
|
||||
static void parseInterval(const char *millis) {
|
||||
unsigned long ms = strtoul(millis, NULL, 10);
|
||||
restartInterval.tv_sec = ms / 1000;
|
||||
restartInterval.tv_nsec = 1000000 * (ms % 1000);
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
setprogname(argv[0]);
|
||||
|
||||
@ -146,7 +153,7 @@ int main(int argc, char *argv[]) {
|
||||
break; case 'g': groupName = optarg;
|
||||
break; case 'p': pidPath = optarg;
|
||||
break; case 's': parseExits(optarg);
|
||||
break; case 't': restartInterval = strtoul(optarg, NULL, 10);
|
||||
break; case 't': parseInterval(optarg);
|
||||
break; case 'u': userName = optarg;
|
||||
break; default: return EX_USAGE;
|
||||
}
|
||||
|
9
daemon.h
9
daemon.h
@ -19,7 +19,7 @@
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/timespec.h>
|
||||
#include <unistd.h>
|
||||
|
||||
typedef unsigned char byte;
|
||||
@ -85,8 +85,8 @@ struct Service {
|
||||
int errPipe[2];
|
||||
struct Line outLine;
|
||||
struct Line errLine;
|
||||
int restartInterval;
|
||||
struct timeval restartTime;
|
||||
struct timespec restartInterval;
|
||||
struct timespec restartDeadline;
|
||||
};
|
||||
|
||||
extern struct Services {
|
||||
@ -100,8 +100,6 @@ void serviceStart(struct Service *service);
|
||||
extern char configError[];
|
||||
int configParse(const char *path);
|
||||
|
||||
extern int restartInterval;
|
||||
|
||||
struct Set256 {
|
||||
uint32_t bits[8];
|
||||
};
|
||||
@ -117,3 +115,4 @@ static inline uint32_t setTest(const struct Set256 *set, byte x) {
|
||||
|
||||
enum { StopExit = 127 };
|
||||
extern struct Set256 stopExits;
|
||||
extern struct timespec restartInterval;
|
||||
|
Loading…
Reference in New Issue
Block a user