Diff for /libaitsched/inc/aitsched.h between versions 1.1 and 1.2

version 1.1, 2011/08/05 15:52:00 version 1.2, 2011/10/04 12:34:33
Line 47  SUCH DAMAGE. Line 47  SUCH DAMAGE.
 #define __AITSCHED_H  #define __AITSCHED_H
   
   
   #include <sys/types.h>
   #include <sys/queue.h>
   #include <sys/uio.h>
   
   
 /* criteria type */  /* criteria type */
 #define CRITERIA_CALL   0  #define CRITERIA_CALL   0
 #define CRITERIA_ARG    1  #define CRITERIA_ARG    1
Line 102  struct sched_HooksTask { Line 107  struct sched_HooksTask {
 typedef struct sched_HooksTask hooks_task_t;  typedef struct sched_HooksTask hooks_task_t;
   
 /* task callback, like pthread callback! */  /* task callback, like pthread callback! */
typedef void *(*sched_task_func_t)(void *);typedef void *(*sched_task_func_t)(sched_task_t * /* current task data*/);
   
 /* task & queue */  /* task & queue */
 struct sched_Task {  struct sched_Task {
Line 110  struct sched_Task { Line 115  struct sched_Task {
         sched_task_type_t               task_type;          sched_task_type_t               task_type;
   
         sched_root_task_t               *task_root;          sched_root_task_t               *task_root;
   #define TASK_ROOT(x)    (x)->task_root
         sched_task_func_t               task_func;          sched_task_func_t               task_func;
   
         void                            *task_arg;          void                            *task_arg;
Line 152  struct sched_RootTask { Line 158  struct sched_RootTask {
 };  };
   
   
   inline int sched_GetErrno();
   inline const char *sched_GetError();
   inline void sched_SetErr(int, char *, ...);
   
   
 /*  /*
  * schedInit() - Init scheduler   * schedInit() - Init scheduler
  * @data = optional data if !=NULL   * @data = optional data if !=NULL
Line 159  struct sched_RootTask { Line 170  struct sched_RootTask {
  * return: allocated root task if ok or NULL error   * return: allocated root task if ok or NULL error
  */   */
 sched_root_task_t *schedInit(void ** __restrict data, size_t datlen);  sched_root_task_t *schedInit(void ** __restrict data, size_t datlen);
#define schedInitIO()      schedInit(&schedRegisterIO, 0)#define schedBegin()      schedInit((void**) &schedRegisterHooks, 0)
 /*  /*
  * schedEnd() - End scheduler & free all resources   * schedEnd() - End scheduler & free all resources
  * @root = root task   * @root = root task
  * return: -1 error or 0 ok   * return: -1 error or 0 ok
  */   */
int schedEnd(sched_root_task_t * __restrict root);int schedEnd(sched_root_task_t ** __restrict root);
 /*  /*
 * schedRegisterIO() - Register IO handles and bind tasks to it * schedRegisterHooks() - Register IO handles and bind tasks to it
  * @root = root task   * @root = root task
  * return: -1 error or 0 ok   * return: -1 error or 0 ok
  */   */
int schedRegisterIO(sched_root_task_t * __restrict root);int schedRegisterHooks(sched_root_task_t * __restrict root);
 /*  /*
  * schedCall() - Call task execution function   * schedCall() - Call task execution function
  * @task = current task   * @task = current task
Line 187  inline void *schedFetch(sched_root_task_t * __restrict Line 198  inline void *schedFetch(sched_root_task_t * __restrict
 /*  /*
  * schedRun() - Scheduler *run loop*   * schedRun() - Scheduler *run loop*
  * @root = root task   * @root = root task
    * @killState = kill condition variable, if !=0 stop scheduler loop
  * return: -1 error or 0 ok   * return: -1 error or 0 ok
  */   */
int schedRun(sched_root_task_t * __restrict root);int schedRun(sched_root_task_t * __restrict root, volatile intptr_t * __restrict killState);
 /*  /*
  * schedCancel() - Cancel task from scheduler   * schedCancel() - Cancel task from scheduler
  * @task = task   * @task = task
Line 210  int schedCancelby(sched_root_task_t * __restrict root, Line 222  int schedCancelby(sched_root_task_t * __restrict root,
   
   
 /*  /*
 * schedRead() - Add READ task to scheduler queue * schedRead() - Add READ I/O task to scheduler queue
  * @root = root task   * @root = root task
  * @func = task execution function   * @func = task execution function
  * @arg = 1st func argument   * @arg = 1st func argument
 * @... = next func arguments, like fd handle * @fd = fd handle
  * return: NULL error or !=NULL new queued task   * return: NULL error or !=NULL new queued task
  */   */
sched_task_t *schedRead(sched_root_task_t * __restrict root, sched_task_func_t func, void *arg, ...);sched_task_t *schedRead(sched_root_task_t * __restrict root, sched_task_func_t func, void *arg, int fd);
 /*  /*
 * schedWrite() - Add WRITE task to scheduler queue * schedWrite() - Add WRITE I/O task to scheduler queue
  * @root = root task   * @root = root task
  * @func = task execution function   * @func = task execution function
  * @arg = 1st func argument   * @arg = 1st func argument
 * @... = next func arguments, like fd handle * @fd = fd handle
  * return: NULL error or !=NULL new queued task   * return: NULL error or !=NULL new queued task
  */   */
sched_task_t *schedWrite(sched_root_task_t * __restrict root, sched_task_func_t func, void *arg, ...);sched_task_t *schedWrite(sched_root_task_t * __restrict root, sched_task_func_t func, void *arg, int fd);
 /*  /*
  * schedTimer() - Add TIMER task to scheduler queue   * schedTimer() - Add TIMER task to scheduler queue
  * @root = root task   * @root = root task
  * @func = task execution function   * @func = task execution function
  * @arg = 1st func argument   * @arg = 1st func argument
 * @... = next func arguments in microSecs, define period 1sec == 1000000 * @ms = arguments in microSecs, define period 1sec == 1000000
  * return: NULL error or !=NULL new queued task   * return: NULL error or !=NULL new queued task
  */   */
sched_task_t *schedTimer(sched_root_task_t * __restrict root, sched_task_func_t func, void *arg, ...);sched_task_t *schedTimer(sched_root_task_t * __restrict root, sched_task_func_t func, void *arg, unsigned int ms);
 /*  /*
  * schedEvent() - Add EVENT task to scheduler queue   * schedEvent() - Add EVENT task to scheduler queue
  * @root = root task   * @root = root task
  * @func = task execution function   * @func = task execution function
  * @arg = 1st func argument   * @arg = 1st func argument
 * @... = next func arguments, like u_long * @val = additional func argument
  * return: NULL error or !=NULL new queued task   * return: NULL error or !=NULL new queued task
  */   */
sched_task_t *schedEvent(sched_root_task_t * __restrict root, sched_task_func_t func, void *arg, ...);sched_task_t *schedEvent(sched_root_task_t * __restrict root, sched_task_func_t func, void *arg, unsigned long val);
 /*  /*
  * schedEventLo() - Add EVENT_Lo task to scheduler queue   * schedEventLo() - Add EVENT_Lo task to scheduler queue
  * @root = root task   * @root = root task
  * @func = task execution function   * @func = task execution function
  * @arg = 1st func argument   * @arg = 1st func argument
 * @... = next func arguments, like u_long * @val = additional func argument
  * return: NULL error or !=NULL new queued task   * return: NULL error or !=NULL new queued task
  */   */
sched_task_t *schedEventLo(sched_root_task_t * __restrict root, sched_task_func_t func, void *arg, ...);sched_task_t *schedEventLo(sched_root_task_t * __restrict root, sched_task_func_t func, void *arg, unsigned long val);
 /*  /*
  * schedCallOnce() - Call once from scheduler   * schedCallOnce() - Call once from scheduler
  * @root = root task   * @root = root task
  * @func = task execution function   * @func = task execution function
  * @arg = 1st func argument   * @arg = 1st func argument
 * @... = next func arguments, like u_long * @val = additional func argument
 * return: NULL error or !=NULL new queued task * return: return value from called func
  */   */
sched_task_t *schedCallOnce(sched_root_task_t * __restrict root, sched_task_func_t func, void *arg, ...);sched_task_t *schedCallOnce(sched_root_task_t * __restrict root, sched_task_func_t func, void *arg, unsigned long val);
   
   
 #endif  #endif

Removed from v.1.1  
changed lines
  Added in v.1.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>