}
}
+struct timeval tv_now_global;
+uint64_t now_global;
+
static void run(void)
{
- struct timeval tv_now;
- uint64_t now;
struct poll_interest *i;
int rv, nfds, remain, idx;
int timeout;
Message(M_NOTICE,"%s [%d]: starting\n",version,secnet_pid);
do {
- if (gettimeofday(&tv_now, NULL)!=0) {
+ if (gettimeofday(&tv_now_global, NULL)!=0) {
fatal_perror("main loop: gettimeofday");
}
- now=((uint64_t)tv_now.tv_sec*(uint64_t)1000)+
- ((uint64_t)tv_now.tv_usec/(uint64_t)1000);
+ now_global=((uint64_t)tv_now_global.tv_sec*(uint64_t)1000)+
+ ((uint64_t)tv_now_global.tv_usec/(uint64_t)1000);
idx=0;
for (i=reg; i; i=i->next) {
- i->after(i->state, fds+idx, i->nfds, &tv_now, &now);
+ i->after(i->state, fds+idx, i->nfds, &tv_now_global, &now_global);
idx+=i->nfds;
}
remain=total_nfds;
timeout=-1;
for (i=reg; i; i=i->next) {
nfds=remain;
- rv=i->before(i->state, fds+idx, &nfds, &timeout, &tv_now, &now);
+ rv=i->before(i->state, fds+idx, &nfds, &timeout, &tv_now_global, &now_global);
if (rv!=0) {
/* XXX we need to handle this properly: increase the
nfds available */
extern int sys_cmd(const char *file, const char *argc, ...);
+extern uint64_t now_global;
+extern struct timeval tv_now_global;
+
+static const uint64_t *const now = &now_global;
+static const struct timeval *const tv_now = &tv_now_global;
+
+/* "now" is current program time, in milliseconds. It is derived
+ from tv_now. Both are provided by the event loop. */
+
/***** END of utility functions *****/
/***** SCHEDULING support */