Helixis 1.0
Task Programming API
Data Structures | Defines | Typedefs
includes/hlx/task.h File Reference

Go to the source code of this file.

Data Structures

struct  __empty_stack

Defines

#define HLX_WAITING   (0)
#define HLX_YIELDED   (1)
#define HLX_EXITED   (2)
#define HLX_ENDED   (3)
#define HLX_MEMORY_EXHAUSTED   (4)
#define HLX_SET(s)   s = __LINE__; case __LINE__:
#define HLX_TASK_INIT()   *ctx = 0;
#define HLX_TASK_BEGIN()   { char HLX_YIELD_FLAG = 1; switch(*ctx) { case 0:
#define HLX_TASK_END()   } HLX_YIELD_FLAG = 0; HLX_TASK_INIT(); return HLX_ENDED; }
#define HLX_TASK_EXIT()
#define HLX_TASK_RESTART()
#define HLX_TASK_WAIT_UNTIL(condition)
#define HLX_TASK_YIELD()
#define HLX_TASK_YIELD_UNTIL(cond)
#define HLX_TASK_WAIT_WHILE(cond)   HLX_TASK_WAIT_UNTIL(!(cond))
#define HLX_STACK(VARS)
#define HLX_L(VAR)   (((struct __local* )*__stack)->VAR)
#define HLX_TASK(TASKNAME, PARAMETER)   int TASKNAME(hlx_ctx* ctx, hlx_group_id self_group_id, void* *__stack, PARAMETER)
#define HLX_SIMPLE_TASK(TASKNAME)   HLX_TASK(TASKNAME, void* __unused_var__)
#define HLX_TASK_ADD(TASK, DATA)   hlx_core_add_task_callback(TASK, DATA, self_group_id, 0)
#define HLX_TASK_ADD_IN_GROUP(TASK, DATA, GROUP)   hlx_core_add_task_in_group_callback(TASK, DATA, GROUP, self_group_id, 0)
#define HLX_TASK_ADD_CALLBACK(TASK, DATA, CALLBACK)   hlx_core_add_task_callback(TASK, DATA, self_group_id, CALLBACK)
#define HLX_TASK_ADD_IN_GROUP_CALLBACK(TASK, DATA, GROUP, CALLBACK)   hlx_core_add_task_in_group_callback(TASK, DATA, GROUP, self_group_id, CALLBACK)

Typedefs

typedef unsigned short hlx_ctx
typedef int(* hlx_task_func )(hlx_ctx *, hlx_group_id, void **, void *)
typedef void(* hlx_task_callback )(void *, hlx_group_id, int)

Define Documentation

#define HLX_ENDED   (3)

Definition at line 98 of file task.h.

Referenced by hlx_scheduler_schedule_group(), and hlx_scheduler_schedule_group_threaded().

#define HLX_EXITED   (2)

Definition at line 97 of file task.h.

Referenced by hlx_scheduler_schedule_group(), and hlx_scheduler_schedule_group_threaded().

#define HLX_L (   VAR)    (((struct __local* )*__stack)->VAR)

Definition at line 172 of file task.h.

#define HLX_MEMORY_EXHAUSTED   (4)

Definition at line 99 of file task.h.

Referenced by hlx_scheduler_schedule_group(), and hlx_scheduler_schedule_group_threaded().

#define HLX_SET (   s)    s = __LINE__; case __LINE__:

Definition at line 108 of file task.h.

#define HLX_SIMPLE_TASK (   TASKNAME)    HLX_TASK(TASKNAME, void* __unused_var__)

Definition at line 176 of file task.h.

#define HLX_STACK (   VARS)
Value:
struct __local { VARS unsigned short __size; };\
                                                if (*__stack == 0 && sizeof(struct __local) > sizeof(struct __empty_stack)) \
                                                { \
                                                        *__stack = hlx_api_entries()->malloc_entry(sizeof(struct __local)); \
                                                        if (!*__stack) return (-1); \
                                                        HLX_L(__size) = sizeof(struct __local); \
                                                }

Definition at line 165 of file task.h.

#define HLX_TASK (   TASKNAME,
  PARAMETER 
)    int TASKNAME(hlx_ctx* ctx, hlx_group_id self_group_id, void* *__stack, PARAMETER)

Definition at line 175 of file task.h.

#define HLX_TASK_ADD (   TASK,
  DATA 
)    hlx_core_add_task_callback(TASK, DATA, self_group_id, 0)

Definition at line 179 of file task.h.

#define HLX_TASK_ADD_CALLBACK (   TASK,
  DATA,
  CALLBACK 
)    hlx_core_add_task_callback(TASK, DATA, self_group_id, CALLBACK)

Definition at line 181 of file task.h.

#define HLX_TASK_ADD_IN_GROUP (   TASK,
  DATA,
  GROUP 
)    hlx_core_add_task_in_group_callback(TASK, DATA, GROUP, self_group_id, 0)

Definition at line 180 of file task.h.

#define HLX_TASK_ADD_IN_GROUP_CALLBACK (   TASK,
  DATA,
  GROUP,
  CALLBACK 
)    hlx_core_add_task_in_group_callback(TASK, DATA, GROUP, self_group_id, CALLBACK)

Definition at line 182 of file task.h.

#define HLX_TASK_BEGIN ( )    { char HLX_YIELD_FLAG = 1; switch(*ctx) { case 0:

Definition at line 115 of file task.h.

#define HLX_TASK_END ( )    } HLX_YIELD_FLAG = 0; HLX_TASK_INIT(); return HLX_ENDED; }

Definition at line 116 of file task.h.

#define HLX_TASK_EXIT ( )
Value:
do {                                            \
    HLX_TASK_INIT();                            \
    return HLX_EXITED;                  \
  } while(0)

Definition at line 119 of file task.h.

#define HLX_TASK_INIT ( )    *ctx = 0;

Definition at line 112 of file task.h.

#define HLX_TASK_RESTART ( )
Value:
do {                                            \
    HLX_TASK_INIT();                            \
    return HLX_WAITING;                 \
  } while(0)

Definition at line 126 of file task.h.

#define HLX_TASK_WAIT_UNTIL (   condition)
Value:
do {                                            \
    HLX_SET(*ctx);                              \
    if(!(condition)) {                          \
      return HLX_WAITING;                       \
    }                                           \
  } while(0)

Definition at line 133 of file task.h.

#define HLX_TASK_WAIT_WHILE (   cond)    HLX_TASK_WAIT_UNTIL(!(cond))

Definition at line 162 of file task.h.

#define HLX_TASK_YIELD ( )
Value:
do {                                            \
    HLX_YIELD_FLAG = 0;                         \
    HLX_SET(*ctx);                              \
    if(HLX_YIELD_FLAG == 0) {                   \
      return HLX_YIELDED;                       \
    }                                           \
  } while(0)

Definition at line 142 of file task.h.

#define HLX_TASK_YIELD_UNTIL (   cond)
Value:
do {                                            \
    HLX_YIELD_FLAG = 0;                         \
    HLX_SET(*ctx);                              \
    if((HLX_YIELD_FLAG == 0) || !(cond)) {      \
      return HLX_YIELDED;                       \
    }                                           \
  } while(0)

Definition at line 152 of file task.h.

#define HLX_WAITING   (0)

Definition at line 95 of file task.h.

#define HLX_YIELDED   (1)

Definition at line 96 of file task.h.


Typedef Documentation

typedef unsigned short hlx_ctx

Definition at line 78 of file task.h.

typedef void(* hlx_task_callback)(void *, hlx_group_id, int)

Definition at line 82 of file task.h.

typedef int(* hlx_task_func)(hlx_ctx *, hlx_group_id, void **, void *)

Definition at line 80 of file task.h.

 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines