Diff for /libaitsched/inc/aitsched.h between versions 1.9 and 1.10

version 1.9, 2012/05/30 08:52:45 version 1.10, 2012/05/31 22:31:48
Line 55  SUCH DAMAGE. Line 55  SUCH DAMAGE.
   
   
 /* criteria type */  /* criteria type */
#define CRITERIA_CALL   0#define CRITERIA_ANY    0
#define CRITERIA_ARG    1#define CRITERIA_CALL   1
#define CRITERIA_FD     2#define CRITERIA_ARG    2
#define CRITERIA_VAL    3#define CRITERIA_FD     3
#define CRITERIA_TS     4#define CRITERIA_VAL    4
 #define CRITERIA_TS     5
 #define CRITERIA_DATA   6
   
   
 /* early declaration for root & task */  /* early declaration for root & task */
Line 70  typedef enum { Line 72  typedef enum {
         taskREAD = 0,          taskREAD = 0,
         taskWRITE,          taskWRITE,
         taskTIMER,          taskTIMER,
           taskALARM,
           taskNODE,
           taskPROC,
           taskUSER,
           taskSIGNAL,
         taskEVENT,          taskEVENT,
         taskEVENTLO,          taskEVENTLO,
         taskALARM,  
         taskREADY,          taskREADY,
         taskUNUSE,          taskUNUSE,
         taskMAX          taskMAX
Line 86  struct sched_HooksTask { Line 92  struct sched_HooksTask {
                 sched_hook_func_t       read;                  sched_hook_func_t       read;
                 /* write(sched_task_t *task, NULL) -> int */                  /* write(sched_task_t *task, NULL) -> int */
                 sched_hook_func_t       write;                  sched_hook_func_t       write;
                   /* timer(sched_task_t *task, struct timespec *ts) -> int */
                   sched_hook_func_t       timer;
                   /* alarm(sched_task_t *task, NULL) -> int */
                   sched_hook_func_t       alarm;
                   /* node(sched_task_t *task, NULL) -> int */
                   sched_hook_func_t       node;
                   /* proc(sched_task_t *task, NULL) -> int */
                   sched_hook_func_t       proc;
                   /* user(sched_task_t *task, NULL) -> int */
                   sched_hook_func_t       user;
                   /* signal(sched_task_t *task, NULL) -> int */
                   sched_hook_func_t       signal;
                 /* event(sched_task_t *task, NULL) -> int */                  /* event(sched_task_t *task, NULL) -> int */
                 sched_hook_func_t       event;                  sched_hook_func_t       event;
                 /* eventlo(sched_task_t *task, NULL) -> int */                  /* eventlo(sched_task_t *task, NULL) -> int */
                 sched_hook_func_t       eventlo;                  sched_hook_func_t       eventlo;
                 /* alarm(sched_task_t *task, NULL) -> int */  
                 sched_hook_func_t       alarm;  
                 /* timer(sched_task_t *task, struct timespec *ts) -> int */  
                 sched_hook_func_t       timer;  
         }       hook_add;          }       hook_add;
         struct {          struct {
                 /* cancel(sched_task_t *task, NULL) -> int */                  /* cancel(sched_task_t *task, NULL) -> int */
Line 122  typedef struct sched_HooksTask hooks_task_t; Line 136  typedef struct sched_HooksTask hooks_task_t;
 typedef void *(*sched_task_func_t)(sched_task_t * /* current task data*/);  typedef void *(*sched_task_func_t)(sched_task_t * /* current task data*/);
   
 /* task lock helpers */  /* task lock helpers */
#define TASK_LOCK(x)            ((x)->task_lock++)#define TASK_LOCK(x)            ((x)->task_lock = 42)
 #define TASK_UNLOCK(x)          ((x)->task_lock ^= (x)->task_lock)  #define TASK_UNLOCK(x)          ((x)->task_lock ^= (x)->task_lock)
 #define TASK_ISLOCKED(x)        ((x)->task_lock)  #define TASK_ISLOCKED(x)        ((x)->task_lock)
   
 /* task & queue */  /* task & queue */
 struct sched_Task {  struct sched_Task {
         volatile int                    task_lock;          volatile int                    task_lock;
        unsigned int                       task_id;        uintptr_t                       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
   
Line 176  struct sched_RootTask { Line 191  struct sched_RootTask {
         sched_queue_t   root_write;          sched_queue_t   root_write;
         sched_queue_t   root_timer;          sched_queue_t   root_timer;
         sched_queue_t   root_alarm;          sched_queue_t   root_alarm;
           sched_queue_t   root_node;
           sched_queue_t   root_proc;
           sched_queue_t   root_user;
           sched_queue_t   root_signal;
         sched_queue_t   root_event;          sched_queue_t   root_event;
           sched_queue_t   root_eventlo;
         sched_queue_t   root_ready;          sched_queue_t   root_ready;
         sched_queue_t   root_unuse;          sched_queue_t   root_unuse;
         sched_queue_t   root_eventlo;  
         int             root_eventlo_miss;          int             root_eventlo_miss;
   
         hooks_task_t    root_hooks;          hooks_task_t    root_hooks;
Line 269  int schedCancel(sched_task_t * __restrict task); Line 288  int schedCancel(sched_task_t * __restrict task);
  *   *
  * @root = root task   * @root = root task
  * @type = cancel from queue type, if =taskMAX cancel same task from all queues   * @type = cancel from queue type, if =taskMAX cancel same task from all queues
 * @criteria = find task by criteria [CRITERIA_CALL|CRITERIA_ARG|CRITERIA_FD|CRITERIA_VAL|CRITERIA_TS] * @criteria = find task by criteria 
  *       [CRITERIA_ANY|CRITERIA_CALL|CRITERIA_ARG|CRITERIA_FD|CRITERIA_VAL|CRITERIA_TS|CRITERIA_DATA]
  * @param = search parameter   * @param = search parameter
  * @hook = custom cleanup hook function, may be NULL   * @hook = custom cleanup hook function, may be NULL
  * return: -1 error, -2 error in sub-stage cancel execution, -3 error from custom hook or 0 ok   * return: -1 error, -2 error in sub-stage cancel execution, -3 error from custom hook or 0 ok
Line 324  sched_task_t *schedAlarm(sched_root_task_t * __restric Line 344  sched_task_t *schedAlarm(sched_root_task_t * __restric
 #define schedAlarmSelf(x)       schedAlarm(TASK_ROOT((x)), TASK_FUNC((x)), TASK_ARG((x)), \  #define schedAlarmSelf(x)       schedAlarm(TASK_ROOT((x)), TASK_FUNC((x)), TASK_ARG((x)), \
                 TASK_TS((x)), TASK_DATA((x)), TASK_DATLEN((x)))                  TASK_TS((x)), TASK_DATA((x)), TASK_DATLEN((x)))
 /*  /*
    * schedNode() - Add NODE task 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 *schedNode(sched_root_task_t * __restrict root, sched_task_func_t func, void *arg, 
                   int fd, void *opt_data, size_t opt_dlen);
   #define schedNodeSelf(x)        schedNode(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
    *
    * @root = root task
    * @func = task execution function
    * @arg = 1st func argument
    * @pid = PID
    * @opt_data = Optional data
    * @opt_dlen = Optional data length
    * return: NULL error or !=NULL new queued task
    */
   sched_task_t *schedProc(sched_root_task_t * __restrict root, sched_task_func_t func, void *arg, 
                   unsigned long pid, void *opt_data, size_t opt_dlen);
   #define schedProcSelf(x)        schedProc(TASK_ROOT((x)), TASK_FUNC((x)), TASK_ARG((x)), \
                   TASK_VAL((x)), TASK_DATA((x)), TASK_DATLEN((x)))
   /*
    * schedSignal() - Add SIGNAL task to scheduler queue
    *
    * @root = root task
    * @func = task execution function
    * @arg = 1st func argument
    * @sig = Signal
    * @opt_data = Optional data
    * @opt_dlen = Optional data length
    * return: NULL error or !=NULL new queued task
    */
   sched_task_t *schedSignal(sched_root_task_t * __restrict root, sched_task_func_t func, void *arg, 
                   unsigned long sig, void *opt_data, size_t opt_dlen);
   #define schedSignalSelf(x)      schedSignal(TASK_ROOT((x)), TASK_FUNC((x)), TASK_ARG((x)), \
                   TASK_VAL((x)), TASK_DATA((x)), TASK_DATLEN((x)))
   
   /*
    * schedUser() - Add trigger USER task to scheduler queue
    *
    * @root = root task
    * @func = task execution function
    * @arg = 1st func argument
    * @id = Trigger ID
    * @opt_data = Optional data
    * @opt_dlen = Optional user's trigger flags
    * return: NULL error or !=NULL new queued task
    */
   sched_task_t *schedUser(sched_root_task_t * __restrict root, sched_task_func_t func, void *arg, 
                   unsigned long id, void *opt_data, size_t opt_dlen);
   #define schedUserSelf(x)        schedUser(TASK_ROOT((x)), TASK_FUNC((x)), TASK_ARG((x)), \
                   TASK_VAL((x)), TASK_DATA((x)), TASK_DATLEN((x)))
   /*
    * schedTrigger() - Triggering USER task
    *
    * @task = task
    * return: -1 error or 0 ok
    */
   int schedTrigger(sched_task_t * __restrict task);
   
   /*
  * schedTimer() - Add TIMER task to scheduler queue   * schedTimer() - Add TIMER task to scheduler queue
  *   *
  * @root = root task   * @root = root task
Line 368  sched_task_t *schedEventLo(sched_root_task_t * __restr Line 457  sched_task_t *schedEventLo(sched_root_task_t * __restr
                 unsigned long val, void *opt_data, size_t opt_dlen);                  unsigned long val, void *opt_data, size_t opt_dlen);
 #define schedEventLoSelf(x)     schedEventLo(TASK_ROOT((x)), TASK_FUNC((x)), TASK_ARG((x)), \  #define schedEventLoSelf(x)     schedEventLo(TASK_ROOT((x)), TASK_FUNC((x)), TASK_ARG((x)), \
                 TASK_VAL((x)), TASK_DATA((x)), TASK_DATLEN((x)))                  TASK_VAL((x)), TASK_DATA((x)), TASK_DATLEN((x)))
   
 /*  /*
  * schedCallOnce() - Call once from scheduler   * schedCallOnce() - Call once from scheduler
  *   *

Removed from v.1.9  
changed lines
  Added in v.1.10


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