| 
version 1.27.2.1, 2015/07/02 22:42:44
 | 
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 - 2015 | Copyright 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 202  struct sched_Task {
 | 
 Line 202  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 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; | 
|         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; | 
| 
 Line 376  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 388  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 403  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 449  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 |