]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - sched.c
interactive: Avoid select(2) in input_available().
[paraslash.git] / sched.c
diff --git a/sched.c b/sched.c
index a2903940fdaea1b24d6a49cfc2f54766c136070f..8deb7f383596162e97444c7766f6d15bc60eb92c 100644 (file)
--- a/sched.c
+++ b/sched.c
@@ -137,12 +137,12 @@ int schedule(struct sched *s)
 again:
        FD_ZERO(&s->rfds);
        FD_ZERO(&s->wfds);
-       s->select_timeout = s->default_timeout;
+       s->timeout = s->default_timeout;
        s->max_fileno = -1;
        clock_get_realtime(&now_struct);
        sched_preselect(s);
        ret = s->select_function(s->max_fileno + 1, &s->rfds, &s->wfds,
-               &s->select_timeout);
+               s->timeout);
        if (ret < 0)
                return ret;
        if (ret == 0) {
@@ -244,7 +244,7 @@ struct task *task_register(struct task_info *info, struct sched *s)
        assert(info->post_select);
 
        if (!s->task_list.next)
-               INIT_LIST_HEAD(&s->task_list);
+               init_list_head(&s->task_list);
 
        t->info = *info;
        t->name = para_strdup(info->name);
@@ -370,7 +370,7 @@ void task_notify_all(struct sched *s, int err)
  */
 void sched_min_delay(struct sched *s)
 {
-       s->select_timeout.tv_sec = s->select_timeout.tv_usec = 0;
+       s->timeout = 0;
 }
 
 /**
@@ -387,8 +387,9 @@ void sched_min_delay(struct sched *s)
  */
 void sched_request_timeout(struct timeval *to, struct sched *s)
 {
-       if (tv_diff(&s->select_timeout, to, NULL) > 0)
-               s->select_timeout = *to;
+       long unsigned ms = tv2ms(to);
+       if (s->timeout > ms)
+               s->timeout = ms;
 }
 
 /**