From: Andre Noll Date: Sun, 1 Jun 2025 01:36:59 +0000 (+0200) Subject: . X-Git-Url: https://git.tuebingen.mpg.de/?a=commitdiff_plain;h=3b76c71c9d60466add186827d670b846b6ccdde2;p=paraslash.git . --- diff --git a/sched.c b/sched.c index 475dead5..3eea90ef 100644 --- a/sched.c +++ b/sched.c @@ -2,7 +2,6 @@ /** \file sched.c Paraslash's scheduling functions. */ - #include "para.h" #include "ipc.h" #include "fd.h" diff --git a/sched.h b/sched.h index ede5e67e..8819232d 100644 --- a/sched.h +++ b/sched.h @@ -1,19 +1,24 @@ /* Copyright (C) 2006 Andre Noll , see file COPYING. */ -/** \file sched.h Sched and task structures and exported symbols from sched.c. */ - - -/** - * Paraslash's scheduler. +/** \file sched.h The paraslash scheduler * - * Designed with KISS in mind. It maintains a list of task structures which is - * extended when a new task is registered. Each task may define a pre_monitor - * function which is called from the scheduler main loop before it calls - * poll(2). Similarly, each task must define a post_monitor function which is - * called after poll(2) returns. + * The scheduler maintains a list of task structures where each list element + * represents a task that has been registered to the scheduler by calling + * \ref task_register(). At each iteration of main loop, the scheduler + * calls the pre-monitor functions to set up two file descriptor sets and to + * compute the timeout for the subsequent call to poll(2). The post-monitor + * functions are called after poll(2) returns. They are supposed to perform + * read/write operations if the poll(2) call indicated that the file descriptor + * is ready for I/O. * - * \sa select(2), poll(2). + * Inter-task communication is possible through a notification API also + * described here. + * + * The functions declared here are implemented in \ref sched.c. All paraslash + * executables employ the scheduler. */ + +/** \par Describes a scheduler instance. */ struct sched { /** Initial value (in milliseconds) before any pre_monitor call. */ int default_timeout; @@ -23,11 +28,11 @@ struct sched { struct pollfd *pfd; /** Number of elements in the above array, passed to poll(2). */ unsigned pfd_array_len; - /** Number of fds registered for montitoring so far. */ + /** Number of fds registered for monitoring so far. */ unsigned num_pfds; /** Maps fds to indices of the pfd array. */ unsigned *pidx; - /** Mumber of elements in the above pidx array. */ + /** Number of elements in the above pidx array. */ unsigned pidx_array_len; /** If non-NULL, use this function instead of \ref xpoll(). */ int (*poll_function)(struct pollfd *fds, nfds_t nfds, int timeout);