+
+/**
+ * Force the next select() call to return before the given future time.
+ *
+ * \param barrier Absolute time before select() should return.
+ * \param s Pointer to the scheduler struct.
+ *
+ * \return If \a barrier is in the past, this function does nothing and returns
+ * zero. Otherwise it returns one.
+ *
+ * \sa sched_request_barrier_or_min_delay().
+ */
+int sched_request_barrier(struct timeval *barrier, struct sched *s)
+{
+ struct timeval diff;
+
+ if (tv_diff(now, barrier, &diff) > 0)
+ return 0;
+ sched_request_timeout(&diff, s);
+ return 1;
+}
+
+/**
+ * Force the next select() call to return before the given time.
+ *
+ * \param barrier Absolute time before select() should return.
+ * \param s Pointer to the scheduler struct.
+ *
+ * \return If \a barrier is in the past, this function requests a minimal
+ * timeout and returns zero. Otherwise it returns one.
+ *
+ * \sa sched_min_delay(), sched_request_barrier().
+ */
+int sched_request_barrier_or_min_delay(struct timeval *barrier, struct sched *s)
+{
+ struct timeval diff;
+
+ if (tv_diff(now, barrier, &diff) > 0) {
+ sched_min_delay(s);
+ return 0;
+ }
+ sched_request_timeout(&diff, s);
+ return 1;
+}