]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - sched.h
sched: Introduce sched_{read,write}_ok().
[paraslash.git] / sched.h
diff --git a/sched.h b/sched.h
index 35e2503e383be3611fc302f5a732e45cf322d506..e0ca0c011bb0d4838a4071098e4c172403fac015 100644 (file)
--- a/sched.h
+++ b/sched.h
  * called after the select call.
  */
 struct sched {
-       /** Initial value before any pre_select call. */
-       struct timeval default_timeout;
-       /** The current timeout for the upcoming select call. */
-       struct timeval select_timeout;
+       /** Initial value (in milliseconds) before any pre_select call. */
+       int default_timeout;
+       /** The timeout (also in milliseconds) for the next select call. */
+       int timeout;
        /** fds that should be watched for readability. */
        fd_set rfds;
        /** fds that should be watched for writability. */
@@ -24,7 +24,7 @@ struct sched {
        /** Highest numbered file descriptor in any of the above fd sets. */
        int max_fileno;
        /** If non-NULL, use this function instead of para_select. */
-       int (*select_function)(int, fd_set *, fd_set *, struct timeval *);
+       int (*select_function)(int, fd_set *, fd_set *, int timeout);
        /** Tasks which have been registered to the scheduler. */
        struct list_head task_list;
 };
@@ -80,3 +80,13 @@ void sched_request_timeout(struct timeval *to, struct sched *s);
 void sched_request_timeout_ms(long unsigned ms, struct sched *s);
 int sched_request_barrier(struct timeval *barrier, struct sched *s);
 int sched_request_barrier_or_min_delay(struct timeval *barrier, struct sched *s);
+
+static inline bool sched_read_ok(int fd, const struct sched *s)
+{
+       return FD_ISSET(fd, &s->rfds);
+}
+
+static inline bool sched_write_ok(int fd, const struct sched *s)
+{
+       return FD_ISSET(fd, &s->wfds);
+}