X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=sched.c;h=14346ec0e1c411ab08da2ddbdc85073d6945615b;hp=44e66c9b62664eb3add50d9924db6b311ea7e273;hb=6cfcbbc058624e76e2cbd503513c60aa2c8607dc;hpb=11e68b8de3eb8bf8b657333d5b8359260559e93b diff --git a/sched.c b/sched.c index 44e66c9b..14346ec0 100644 --- a/sched.c +++ b/sched.c @@ -108,12 +108,12 @@ int schedule(struct sched *s) return -E_NOT_INITIALIZED; if (!s->select_function) s->select_function = para_select; - gettimeofday(now, NULL); again: FD_ZERO(&s->rfds); FD_ZERO(&s->wfds); s->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; @@ -250,3 +250,22 @@ int kill_task(char *id) } return -E_NO_SUCH_TASK; } + +void sched_min_delay(struct sched *s) +{ + s->timeout.tv_sec = 0; + s->timeout.tv_usec = 1; +} + +void sched_request_timeout(struct timeval *timeout, struct sched *s) +{ + if (tv_diff(&s->timeout, timeout, NULL) > 0) + s->timeout = *timeout; +} + +void sched_request_timeout_ms(long unsigned ms, struct sched *s) +{ + struct timeval tv; + ms2tv(ms, &tv); + sched_request_timeout(&tv, s); +}