X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=sources%2Ftest_timerfdfork.c;h=19d37b680ae7494b7b89749c0271bc4b8151e222;hp=34ceaedd1b317c0d29bf31397a2a7e5718ad54f0;hb=583032fbff658a947c477c6fd25f87c13d884e85;hpb=511c7621872e959e05b79920b09c6e45590f1706 diff --git a/sources/test_timerfdfork.c b/sources/test_timerfdfork.c index 34ceaed..19d37b6 100644 --- a/sources/test_timerfdfork.c +++ b/sources/test_timerfdfork.c @@ -38,7 +38,7 @@ #include /* C strings library */ #include /* timerfd */ #include /* Linux epoll interface */ -// #include +#include #include "macros.h" #include "Gapil.h" @@ -55,16 +55,17 @@ int main(int argc, char *argv[]) * Variables definition */ int i, n, nread, fd, epfd; + int wait=5, interval=1, nswait=0, nsinter=0; // timer default pid_t pid; struct epoll_event epev, events[MAX_EPOLL_EV]; struct itimerspec expiring; - uint64_t expirated; + uint64_t expired; /* * Input section: decode command line parameters * Use getopt function */ opterr = 0; /* don't want writing to stderr */ - while ( (i = getopt(argc, argv, "h")) != -1) { + while ( (i = getopt(argc, argv, "ht:i:w:n:")) != -1) { switch (i) { /* * Handling options @@ -74,6 +75,18 @@ int main(int argc, char *argv[]) usage(); return -1; break; + case 'i': /* timer interval */ + interval = strtol(optarg, NULL, 10); /* convert input */ + break; + case 't': /* timer expiring */ + wait = strtol(optarg, NULL, 10); /* convert input */ + break; + case 'n': /* timer interval in ns */ + nsinter = strtol(optarg, NULL, 10); /* convert input */ + break; + case 'w': /* timer expiring in ns */ + nswait = strtol(optarg, NULL, 10); /* convert input */ + break; case '?': /* unrecognized options */ printf("Unrecognized options -%c\n",optopt); usage(); @@ -95,13 +108,14 @@ int main(int argc, char *argv[]) } /* timerfd setup */ fd = timerfd_create(CLOCK_MONOTONIC, TFD_NONBLOCK); - expiring.it_interval.tv_sec=1; - expiring.it_interval.tv_nsec=0; - expiring.it_value.tv_sec=5; - expiring.it_value.tv_nsec=0; + expiring.it_interval.tv_sec=interval; + expiring.it_interval.tv_nsec=nsinter; + expiring.it_value.tv_sec=wait; + expiring.it_value.tv_nsec=nswait; if (timerfd_settime(fd, 0, &expiring, NULL)) { die("Cannot set timer"); } + printf("Timer interval %i sec, timer time %i sec\n", wait, interval); pid = fork(); /* epoll setup */ if ((epfd=epoll_create(5)) < 0) @@ -111,35 +125,38 @@ int main(int argc, char *argv[]) if (epoll_ctl(epfd, EPOLL_CTL_ADD, fd, &epev)) die("Failing in epoll_ctl"); /* main loop */ - //while (1) { - if ((n=epoll_wait(epfd, events, MAX_EPOLL_EV, -1)) < 0) - die("error on epoll_wait"); - debug("Got %i events\n", n); - /* loop on epoll events */ - for (i=0; i