Diff for /libaitsched/inc/aitsched.h between versions 1.32 and 1.35.2.3

version 1.32, 2023/02/25 15:55:01 version 1.35.2.3, 2026/05/20 04:04:10
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 - 2023Copyright 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 */
 #define CRITERIA_ANY    0  #define CRITERIA_ANY    0
 #define CRITERIA_CALL   1  #define CRITERIA_CALL   1
Line 146  struct sched_HooksTask { Line 153  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 163  typedef void *(*sched_task_func_t)(sched_task_t * /* c Line 172  typedef void *(*sched_task_func_t)(sched_task_t * /* c
 #define SCHED_TASK_DEFINE(x)    void *(x)(sched_task_t*)  #define SCHED_TASK_DEFINE(x)    void *(x)(sched_task_t*)
   
 /* task lock helpers */  /* task lock helpers */
#define TASK_LOCK(x)            ((x)->task_lock = 42)#ifdef ATOMIC_SUPPORT
#define TASK_UNLOCK(x)          ((x)->task_lock ^= (x)->task_lock)        #define TASK_LOCK(x)            atomic_store_explicit(&(x)->task_lock, 42, memory_order_release)
#define TASK_ISLOCKED(x)        ((x)->task_lock)        #define TASK_UNLOCK(x)          atomic_store_explicit(&(x)->task_lock, 0, memory_order_release)
         #define TASK_ISLOCKED(x)        atomic_load_explicit(&(x)->task_lock, memory_order_acquire)
 #else
         #define TASK_LOCK(x)            ((x)->task_lock = 42)
         #define TASK_UNLOCK(x)          ((x)->task_lock ^= (x)->task_lock)
         #define TASK_ISLOCKED(x)        ((x)->task_lock)
 #endif
   
 /* task & queue */  /* task & queue */
 struct sched_Task {  struct sched_Task {
Line 173  struct sched_Task { Line 188  struct sched_Task {
 #define TASK_ID(x)      ((struct sched_Task*) (x)->task_id)  #define TASK_ID(x)      ((struct sched_Task*) (x)->task_id)
         sched_task_type_t               task_type;          sched_task_type_t               task_type;
 #define TASK_TYPE(x)    (x)->task_type  #define TASK_TYPE(x)    (x)->task_type
   #ifdef ATOMIC_SUPPORT
           atomic_int                      task_lock;
   #else
         volatile int                    task_lock;          volatile int                    task_lock;
   #endif
   
         sched_root_task_t               *task_root;          sched_root_task_t               *task_root;
 #define TASK_ROOT(x)    (x)->task_root  #define TASK_ROOT(x)    (x)->task_root
Line 258  struct sched_RootTask { Line 277  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 387  sched_task_t *schedQueryby(sched_root_task_t * __restr Line 410  sched_task_t *schedQueryby(sched_root_task_t * __restr
  *   *
  * @root = root task   * @root = root task
  * @on = Activate or =0 deactivate   * @on = Activate or =0 deactivate
 * return: -1 error or 0 ok * return: -1 error, 1 already started, 2 another thread already started or 0 ok
  */   */
 int schedSignalDispatch(sched_root_task_t * __restrict root, int on);  int schedSignalDispatch(sched_root_task_t * __restrict root, int on);
   
Line 767  void *sched_taskExit(sched_task_t *task, intptr_t retc Line 790  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.32  
changed lines
  Added in v.1.35.2.3


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