Diff for /libaitsched/inc/aitsched.h between versions 1.24 and 1.30

version 1.24, 2013/11/21 14:39:10 version 1.30, 2022/11/29 20:15:18
Line 12  terms: Line 12  terms:
 All of the documentation and software included in the ELWIX and AITNET  All of the documentation and software included in the ELWIX and AITNET
 Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>  Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>
   
Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013Copyright 2004 - 2022
         by Michael Pounov <misho@elwix.org>.  All rights reserved.          by Michael Pounov <misho@elwix.org>.  All rights reserved.
   
 Redistribution and use in source and binary forms, with or without  Redistribution and use in source and binary forms, with or without
Line 49  SUCH DAMAGE. Line 49  SUCH DAMAGE.
   
 #include <sys/types.h>  #include <sys/types.h>
 #include <sys/queue.h>  #include <sys/queue.h>
#include <sys/event.h>#include <sys/select.h>
 #include <sys/uio.h>  #include <sys/uio.h>
 #include <stdint.h>  #include <stdint.h>
 #include <pthread.h>  #include <pthread.h>
Line 160  typedef struct sched_HooksTask hooks_task_t; Line 160  typedef struct sched_HooksTask hooks_task_t;
   
 /* task callback, like pthread callback! */  /* task callback, like pthread callback! */
 typedef void *(*sched_task_func_t)(sched_task_t * /* current task data*/);  typedef void *(*sched_task_func_t)(sched_task_t * /* current task data*/);
   #define SCHED_TASK_DEFINE(x)    void *(x)(sched_task_t*)
   
 /* task lock helpers */  /* task lock helpers */
 #define TASK_LOCK(x)            ((x)->task_lock = 42)  #define TASK_LOCK(x)            ((x)->task_lock = 42)
Line 194  struct sched_Task { Line 195  struct sched_Task {
 #define TASK_FD(x)      (x)->task_val.fd  #define TASK_FD(x)      (x)->task_val.fd
 #define TASK_TS(x)      (x)->task_val.ts  #define TASK_TS(x)      (x)->task_val.ts
   
   #define TASK_TS2TV(x, tvp)      (assert((tvp)), (tvp)->tv_sec = (x)->task_val.ts.tv_sec, \
                                           (tvp)->tv_usec = (x)->task_val.ts.tv_nsec / 1000)
   
         struct iovec                    task_data;          struct iovec                    task_data;
 #define TASK_DATA(x)    (x)->task_data.iov_base  #define TASK_DATA(x)    (x)->task_data.iov_base
 #define TASK_DATLEN(x)  (x)->task_data.iov_len  #define TASK_DATLEN(x)  (x)->task_data.iov_len
   
           unsigned long                   task_harg;
   #define TASK_HARG(x)    (x)->task_harg
   
         TAILQ_ENTRY(sched_Task)         task_node;          TAILQ_ENTRY(sched_Task)         task_node;
 };  };
 typedef TAILQ_HEAD(, sched_Task) sched_queue_t;  typedef TAILQ_HEAD(, sched_Task) sched_queue_t;
Line 211  typedef TAILQ_HEAD(, sched_Task) sched_queue_t; Line 218  typedef TAILQ_HEAD(, sched_Task) sched_queue_t;
 /* root task */  /* root task */
 struct sched_RootTask {  struct sched_RootTask {
         int             root_kq;          int             root_kq;
        unsigned long        root_miss;        fd_set          root_fds[3];
         struct timespec root_wait;          struct timespec root_wait;
         struct timespec root_poll;          struct timespec root_poll;
        intptr_t        root_cond;        unsigned long   root_miss;
         intptr_t        root_cond[1];
         void            *root_ret;          void            *root_ret;
   
         pthread_mutex_t root_mtx[taskMAX];          pthread_mutex_t root_mtx[taskMAX];
Line 304  int schedPolling(sched_root_task_t * __restrict root,  Line 312  int schedPolling(sched_root_task_t * __restrict root, 
  * @condValue = condition value, kill schedRun() if condValue == killState   * @condValue = condition value, kill schedRun() if condValue == killState
  * return: -1 error or 0 ok   * return: -1 error or 0 ok
  */   */
int schedTermCondition(sched_root_task_t * __restrict root, intptr_t condValue);int schedTermCondition(sched_root_task_t * __restrict root, intptr_t * __restrict condValue);
 /*  /*
  * schedCall() - Call task execution function   * schedCall() - Call task execution function
  *   *
Line 371  int schedQueryby(sched_root_task_t * __restrict root,  Line 379  int schedQueryby(sched_root_task_t * __restrict root, 
   
   
 /*  /*
    * schedReadExt() - Add READ I/O task to scheduler queue with custom event mask
    *
    * @root = root task
    * @func = task execution function
    * @arg = 1st func argument
    * @fd = fd handle
    * @opt_data = Optional data
    * @opt_dlen = Optional data length
    * @mask = Event mask
    * return: NULL error or !=NULL new queued task
    */
   sched_task_t *schedReadExt(sched_root_task_t * __restrict root, sched_task_func_t func, void *arg, 
                   int fd, void *opt_data, size_t opt_dlen, unsigned long mask);
   /*
  * schedRead() - Add READ I/O task to scheduler queue   * schedRead() - Add READ I/O task to scheduler queue
  *   *
  * @root = root task   * @root = root task
Line 383  int schedQueryby(sched_root_task_t * __restrict root,  Line 405  int schedQueryby(sched_root_task_t * __restrict root, 
  */   */
 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, void *opt_data, size_t opt_dlen);                  int fd, void *opt_data, size_t opt_dlen);
#define schedReadSelf(x)        schedRead(TASK_ROOT((x)), TASK_FUNC((x)), TASK_ARG((x)), \#define schedReadSelf(x)        schedReadExt(TASK_ROOT((x)), TASK_FUNC((x)), TASK_ARG((x)), \
                TASK_FD((x)), TASK_DATA((x)), TASK_DATLEN((x)))                TASK_FD((x)), TASK_DATA((x)), TASK_DATLEN((x)), TASK_HARG((x)))
 /*  /*
    * schedWriteExt() - Add WRITE I/O task to scheduler queue with custom event mask
    *
    * @root = root task
    * @func = task execution function
    * @arg = 1st func argument
    * @fd = fd handle
    * @opt_data = Optional data
    * @opt_dlen = Optional data length
    * @mask = Event mask
    * return: NULL error or !=NULL new queued task
    */
   sched_task_t *schedWriteExt(sched_root_task_t * __restrict root, sched_task_func_t func, void *arg, 
                   int fd, void *opt_data, size_t opt_dlen, unsigned long mask);
   /*
  * schedWrite() - Add WRITE I/O task to scheduler queue   * schedWrite() - Add WRITE I/O task to scheduler queue
  *   *
  * @root = root task   * @root = root task
Line 398  sched_task_t *schedRead(sched_root_task_t * __restrict Line 434  sched_task_t *schedRead(sched_root_task_t * __restrict
  */   */
 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, void *opt_data, size_t opt_dlen);                  int fd, void *opt_data, size_t opt_dlen);
#define schedWriteSelf(x)       schedWrite(TASK_ROOT((x)), TASK_FUNC((x)), TASK_ARG((x)), \#define schedWriteSelf(x)       schedWriteExt(TASK_ROOT((x)), TASK_FUNC((x)), TASK_ARG((x)), \
                TASK_FD((x)), TASK_DATA((x)), TASK_DATLEN((x)))                TASK_FD((x)), TASK_DATA((x)), TASK_DATLEN((x)), TASK_HARG((x)))
 /*  /*
  * schedAlarm() - Add ALARM task to scheduler queue   * schedAlarm() - Add ALARM task to scheduler queue
  *   *
Line 444  sched_task_t *schedRTC(sched_root_task_t * __restrict  Line 480  sched_task_t *schedRTC(sched_root_task_t * __restrict 
 sched_task_t *schedNode(sched_root_task_t * __restrict root, sched_task_func_t func, void *arg,   sched_task_t *schedNode(sched_root_task_t * __restrict root, sched_task_func_t func, void *arg, 
                 int fd, void *opt_data, size_t opt_dlen);                  int fd, void *opt_data, size_t opt_dlen);
 #define schedNodeSelf(x)        schedNode(TASK_ROOT((x)), TASK_FUNC((x)), TASK_ARG((x)), \  #define schedNodeSelf(x)        schedNode(TASK_ROOT((x)), TASK_FUNC((x)), TASK_ARG((x)), \
                   TASK_FD((x)), TASK_DATA((x)), TASK_DATLEN((x)))
   /*
    * schedNode2() - Add NODE task with all events to scheduler queue
    *
    * @root = root task
    * @func = task execution function
    * @arg = 1st func argument
    * @fd = fd handle
    * @opt_data = Optional data
    * @opt_dlen = Optional data length
    * return: NULL error or !=NULL new queued task
    */
   sched_task_t *schedNode2(sched_root_task_t * __restrict root, sched_task_func_t func, void *arg, 
                   int fd, void *opt_data, size_t opt_dlen);
   #define schedNode2Self(x)       schedNode2(TASK_ROOT((x)), TASK_FUNC((x)), TASK_ARG((x)), \
                 TASK_FD((x)), TASK_DATA((x)), TASK_DATLEN((x)))                  TASK_FD((x)), TASK_DATA((x)), TASK_DATLEN((x)))
 /*  /*
  * schedProc() - Add PROC task to scheduler queue   * schedProc() - Add PROC task to scheduler queue

Removed from v.1.24  
changed lines
  Added in v.1.30


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