Diff for /libaitsched/inc/aitsched.h between versions 1.26.2.1 and 1.35.2.1

version 1.26.2.1, 2014/06/03 20:39:54 version 1.35.2.1, 2026/05/20 03:07:51
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 - 2014Copyright 2004 - 2026
         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 57  SUCH DAMAGE. Line 57  SUCH DAMAGE.
 #ifdef EVFILT_LIO  #ifdef EVFILT_LIO
 #include <aio.h>  #include <aio.h>
 #endif  #endif
   #ifdef ATOMIC_SUPPORT
   #ifndef __cplusplus
           #include <stdatomic.h>
   #else
           #include <atomic>
           #define _Atomic(X) std::atomic<X>
   #endif
   #endif
   
   
 /* criteria type */  /* criteria type */
Line 146  struct sched_HooksTask { Line 154  struct sched_HooksTask {
                 sched_hook_func_t       exception;                  sched_hook_func_t       exception;
                 /* condition(sched_root_task_t *root, intptr_t *stopValue) -> int */                  /* condition(sched_root_task_t *root, intptr_t *stopValue) -> int */
                 sched_hook_func_t       condition;                  sched_hook_func_t       condition;
                   /* profile(sched_task_t *root, intptr_t *stageValue) -> int */
                   sched_hook_func_t       profile;
         }       hook_exec;          }       hook_exec;
         struct {          struct {
                 /* init(sched_root_task_t *root, void *data) -> int */                  /* init(sched_root_task_t *root, void *data) -> int */
Line 202  struct sched_Task { Line 212  struct sched_Task {
 #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 215  typedef TAILQ_HEAD(, sched_Task) sched_queue_t; Line 228  typedef TAILQ_HEAD(, sched_Task) sched_queue_t;
 /* root task */  /* root task */
 struct sched_RootTask {  struct sched_RootTask {
         int             root_kq;          int             root_kq;
        fd_set          root_fds[2];        fd_set          root_fds[3];
         struct timespec root_wait;          struct timespec root_wait;
         struct timespec root_poll;          struct timespec root_poll;
         unsigned long   root_miss;          unsigned long   root_miss;
         intptr_t        root_cond[1];          intptr_t        root_cond[1];
         void            *root_ret;          void            *root_ret;
   #ifdef HAVE_LIBPTHREAD
           pthread_mutex_t root_sigmtx;
           pthread_t       root_sigthr;
           sigset_t        root_sigset;
           sigset_t        root_oldset;
   #endif
   
         pthread_mutex_t root_mtx[taskMAX];          pthread_mutex_t root_mtx[taskMAX];
   
Line 249  struct sched_RootTask { Line 268  struct sched_RootTask {
 };  };
 #define ROOT_QUEUE_EMPTY(x, _q) TAILQ_EMPTY(&((x)->root_##_q))  #define ROOT_QUEUE_EMPTY(x, _q) TAILQ_EMPTY(&((x)->root_##_q))
 #define ROOT_RETURN(x)  (x)->root_ret  #define ROOT_RETURN(x)  (x)->root_ret
   #define ROOT_PROFILING(x, _cb) (x)->root_hooks.hook_exec.profile = (_cb)
   
   #ifdef __cplusplus
   extern "C" {
   #endif
   
 int sched_GetErrno();  int sched_GetErrno();
 const char *sched_GetError();  const char *sched_GetError();
Line 369  int schedQuery(sched_task_t * __restrict task); Line 392  int schedQuery(sched_task_t * __restrict task);
  *      [ CRITERIA_ANY|CRITERIA_CALL|CRITERIA_ARG|CRITERIA_FD|CRITERIA_VAL|   *      [ CRITERIA_ANY|CRITERIA_CALL|CRITERIA_ARG|CRITERIA_FD|CRITERIA_VAL|
  *              CRITERIA_ID|CRITERIA_TS|CRITERIA_DATA|CRITERIA_DATLEN ]   *              CRITERIA_ID|CRITERIA_TS|CRITERIA_DATA|CRITERIA_DATLEN ]
  * @param = search parameter   * @param = search parameter
 * return: -1 error, 0 found or 1 not found * return: NULL not found or !=NULL task
  */   */
int schedQueryby(sched_root_task_t * __restrict root, sched_task_type_t type, sched_task_t *schedQueryby(sched_root_task_t * __restrict root, sched_task_type_t type, 
                 unsigned char criteria, void *param);                  unsigned char criteria, void *param);
   /*
    * schedSignalDispatch() - Activate or Deactivate signal dispatcher
    *
    * @root = root task
    * @on = Activate or =0 deactivate
    * return: -1 error, 1 already started, 2 another thread already started or 0 ok
    */
   int schedSignalDispatch(sched_root_task_t * __restrict root, int on);
   
   
 /*  /*
    * 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 388  int schedQueryby(sched_root_task_t * __restrict root,  Line 433  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 403  sched_task_t *schedRead(sched_root_task_t * __restrict Line 462  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 451  sched_task_t *schedNode(sched_root_task_t * __restrict Line 510  sched_task_t *schedNode(sched_root_task_t * __restrict
 #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)))                  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)))
   /*
  * schedProc() - Add PROC task to scheduler queue   * schedProc() - Add PROC task to scheduler queue
  *   *
  * @root = root task   * @root = root task
Line 707  void *sched_taskExit(sched_task_t *task, intptr_t retc Line 781  void *sched_taskExit(sched_task_t *task, intptr_t retc
  */   */
 #define taskExit(t, x)          return sched_taskExit((t), (intptr_t) (x))  #define taskExit(t, x)          return sched_taskExit((t), (intptr_t) (x))
   
   #ifdef __cplusplus
   }
   #endif
   
 #endif  #endif

Removed from v.1.26.2.1  
changed lines
  Added in v.1.35.2.1


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