sched: Use built-in instead of open-coded timeout helpers.
authorAndre Noll <maan@systemlinux.org>
Sun, 1 Aug 2010 17:56:10 +0000 (19:56 +0200)
committerAndre Noll <maan@systemlinux.org>
Tue, 31 Aug 2010 20:13:32 +0000 (22:13 +0200)
In many places, sched_min_delay() or sched_request_timeout() are
open-coded.  Use the corresponding helpers from sched.c instead and
rename the "timeout" parameter of sched_request_timeout() to avoid
warnings on old gcc versions.

alsa_write.c
grab_client.c
recv_common.c
sched.c
sched.h
vss.c
wav_filter.c

index d115a52..bcabe53 100644 (file)
@@ -183,8 +183,7 @@ static void alsa_write_pre_select(struct sched *s, struct task *t)
                underrun = 50;
        underrun -= 50;
        ms2tv(underrun, &tv);
-       if (tv_diff(&s->timeout, &tv, NULL) > 0)
-               s->timeout = tv;
+       sched_request_timeout(&tv, s);
 }
 
 static void alsa_close(struct writer_node *wn)
index 5971f11..b61981f 100644 (file)
@@ -101,11 +101,8 @@ static void gc_pre_select(struct sched *s, struct task *t)
 
        if (ret == 0)
                return;
-       if (ret < 0) {
-               s->timeout.tv_sec = 0;
-               s->timeout.tv_usec = 0;
-               return;
-       }
+       if (ret < 0)
+               sched_min_delay(s);
        para_fd_set(gc->fd, &s->wfds, &s->max_fileno);
 }
 
index 6f3fc57..6517948 100644 (file)
@@ -129,9 +129,7 @@ int generic_recv_pre_select(struct sched *s, struct task *t)
        int ret = btr_node_status(rn->btrn, 0, BTR_NT_ROOT);
 
        t->error = 0;
-       if (ret < 0) {
-               s->timeout.tv_sec = 0;
-               s->timeout.tv_usec = 1;
-       }
+       if (ret < 0)
+               sched_min_delay(s);
        return ret;
 }
diff --git a/sched.c b/sched.c
index cdc5b65..6da5fa2 100644 (file)
--- a/sched.c
+++ b/sched.c
@@ -132,13 +132,14 @@ int schedule(struct sched *s)
 again:
        FD_ZERO(&s->rfds);
        FD_ZERO(&s->wfds);
-       s->timeout = s->default_timeout;
+       s->select_timeout = s->default_timeout;
        s->max_fileno = -1;
        gettimeofday(now, NULL);
        sched_preselect(s);
        if (list_empty(&pre_select_list) && list_empty(&post_select_list))
                return 0;
-       ret = s->select_function(s->max_fileno + 1, &s->rfds, &s->wfds, &s->timeout);
+       ret = s->select_function(s->max_fileno + 1, &s->rfds, &s->wfds,
+               &s->select_timeout);
        if (ret < 0)
                return ret;
        if (ret == 0) {
@@ -291,26 +292,26 @@ int kill_task(char *id)
  */
 void sched_min_delay(struct sched *s)
 {
-       s->timeout.tv_sec = 0;
-       s->timeout.tv_usec = 1;
+       s->select_timeout.tv_sec = 0;
+       s->select_timeout.tv_usec = 1;
 }
 
 /**
  * Impose an upper bound for the timeout of the next select() call.
  *
- * \param timeout Maximal allowed timeout.
+ * \param to Maximal allowed timeout.
  * \param s Pointer to the scheduler struct.
  *
- * If the current scheduler timeout is already smaller than \a timeout, this
+ * If the current scheduler timeout is already smaller than \a to, this
  * function does nothing. Otherwise the timeout for the next select() call is
  * set to the given value.
  *
  * \sa sched_request_timeout_ms().
  */
-void sched_request_timeout(struct timeval *timeout, struct sched *s)
+void sched_request_timeout(struct timeval *to, struct sched *s)
 {
-       if (tv_diff(&s->timeout, timeout, NULL) > 0)
-               s->timeout = *timeout;
+       if (tv_diff(&s->select_timeout, to, NULL) > 0)
+               s->select_timeout = *to;
 }
 
 /**
diff --git a/sched.h b/sched.h
index 7681567..1da5a22 100644 (file)
--- a/sched.h
+++ b/sched.h
@@ -20,14 +20,14 @@ struct sched {
        /** Initial value before any pre_select call. */
        struct timeval default_timeout;
        /** The current timeout for the upcoming select call. */
-       struct timeval timeout;
+       struct timeval select_timeout;
        /** fds that should be watched for readability. */
        fd_set rfds;
        /** fds that should be watched for writability. */
        fd_set wfds;
        /** Highest numbered file descriptor in any of the above fd sets. */
        int max_fileno;
-       /** In non-NULL, use this function instead of para_select. */
+       /** If non-NULL, use this function instead of para_select. */
        int (*select_function)(int, fd_set *, fd_set *, struct timeval *);
 };
 
@@ -80,7 +80,7 @@ char *get_task_list(void);
 int kill_task(char *id);
 void sched_shutdown(void);
 void sched_min_delay(struct sched *s);
-void sched_request_timeout(struct timeval *timeout, struct sched *s);
+void sched_request_timeout(struct timeval *to, struct sched *s);
 void sched_request_timeout_ms(long unsigned ms, struct sched *s);
 void sched_request_barrier(struct timeval *barrier, struct sched *s);
 void sched_request_barrier_or_min_delay(struct timeval *barrier, struct sched *s);
diff --git a/vss.c b/vss.c
index e26e8c8..b470658 100644 (file)
--- a/vss.c
+++ b/vss.c
@@ -678,7 +678,7 @@ static void set_mmd_offset(void)
 static void vss_pre_select(struct sched *s, struct task *t)
 {
        int i;
-       struct timeval *tv, diff;
+       struct timeval *tv;
        struct vss_task *vsst = container_of(t, struct vss_task, task);
 
        if (!vsst->map || vss_next() || vss_paused() || vss_repos()) {
@@ -719,8 +719,8 @@ static void vss_pre_select(struct sched *s, struct task *t)
                senders[i].pre_select(&s->max_fileno, &s->rfds, &s->wfds);
        }
        tv = vss_compute_timeout(vsst);
-       if (tv && tv_diff(tv, &s->timeout, &diff) < 0)
-               s->timeout = *tv;
+       if (tv)
+               sched_request_timeout(tv, s);
 }
 
 static int recv_afs_msg(int afs_socket, int *fd, uint32_t *code, uint32_t *data)
index 63c7b7e..b28b1d3 100644 (file)
@@ -72,8 +72,7 @@ static void wav_pre_select(struct sched *s, struct task *t)
        t->error = 0;
        if (iqs == 0)
                return;
-       s->timeout.tv_sec = 0;
-       s->timeout.tv_usec = 1;
+       sched_min_delay(s);
 }
 
 static void wav_post_select(__a_unused struct sched *s, struct task *t)