agileRTOS (zrtos)  Version 0.8.0 (ghostbuster)
task.h File Reference
#include <zrtos/error.h>
#include <zrtos/errno.h>
#include <zrtos/clist.h>
Include dependency graph for task.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  _zrtos_task_t
 

Typedefs

typedef unsigned int zrtos_task_tick_t
 
typedef unsigned int zrtos_task_id_t
 
typedef struct _zrtos_task_t zrtos_task_t
 

Enumerations

enum  zrtos_task_state_t {
  ZRTOS_TASK_STATE__READY = 0x0000,
  ZRTOS_TASK_STATE__RUNNING = 1 << (sizeof(zrtos_task_tick_t) * 8 - 2),
  ZRTOS_TASK_STATE__DONE = 1 << (sizeof(zrtos_task_tick_t) * 8 - 1),
  ZRTOS_TASK_STATE__MASK
}
 

Functions

bool zrtos_task__init (zrtos_task_t *thiz, zrtos_arch_stack_t *stack_ptr)
 
bool zrtos_task__init_ex (zrtos_task_t *thiz, zrtos_arch_stack_t *heap, zrtos_arch_callback_t callback, void *args)
 
void zrtos_task__set_delay_ms (zrtos_task_t *thiz, zrtos_task_tick_t ms)
 
void zrtos_task__on_tick (zrtos_task_t *thiz)
 
bool zrtos_task__is_ready (zrtos_task_t *thiz)
 
bool zrtos_task__is_running (zrtos_task_t *thiz)
 
bool zrtos_task__is_done (zrtos_task_t *thiz)
 
void zrtos_task__set_ready (zrtos_task_t *thiz)
 
void zrtos_task__set_running (zrtos_task_t *thiz)
 
void zrtos_task__set_done (zrtos_task_t *thiz)
 
zrtos_task_tzrtos_task__get_next_task (zrtos_task_t *thiz)
 
zrtos_task_tzrtos_task__get_previous_task (zrtos_task_t *thiz)
 
void zrtos_task__set_stack_ptr (zrtos_task_t *thiz, zrtos_arch_stack_t *stack_ptr)
 
zrtos_arch_stack_tzrtos_task__get_stack_ptr (zrtos_task_t *thiz)
 
void zrtos_task__set_errno (zrtos_task_t *thiz, zrtos_error_t error_code)
 
zrtos_error_t zrtos_task__get_errno (zrtos_task_t *thiz)
 
void zrtos_task__set_parent (zrtos_task_t *thiz, zrtos_task_t *parent)
 
zrtos_task_tzrtos_task__get_parent (zrtos_task_t *thiz)
 

Typedef Documentation

◆ zrtos_task_id_t

typedef unsigned int zrtos_task_id_t

Definition at line 25 of file task.h.

◆ zrtos_task_t

typedef struct _zrtos_task_t zrtos_task_t

◆ zrtos_task_tick_t

typedef unsigned int zrtos_task_tick_t

Definition at line 24 of file task.h.

Enumeration Type Documentation

◆ zrtos_task_state_t

Enumerator
ZRTOS_TASK_STATE__READY 
ZRTOS_TASK_STATE__RUNNING 
ZRTOS_TASK_STATE__DONE 
ZRTOS_TASK_STATE__MASK 

Definition at line 27 of file task.h.

Function Documentation

◆ zrtos_task__get_errno()

zrtos_error_t zrtos_task__get_errno ( zrtos_task_t thiz)

Definition at line 136 of file task.h.

136  {
137  return thiz->error_code;
138 }
zrtos_error_t error_code
Definition: task.h:41
Here is the caller graph for this function:

◆ zrtos_task__get_next_task()

zrtos_task_t* zrtos_task__get_next_task ( zrtos_task_t thiz)

Definition at line 114 of file task.h.

114  {
117 }
#define zrtos_types__get_container_of(ptr, type, member)
Definition: types.h:69
zrtos_clist_node_t node
Definition: task.h:37
zrtos_clist_node_t * zrtos_clist_node__get_next_node(zrtos_clist_node_t *node)
Definition: clist.h:38
Here is the call graph for this function:
Here is the caller graph for this function:

◆ zrtos_task__get_parent()

zrtos_task_t* zrtos_task__get_parent ( zrtos_task_t thiz)

Definition at line 144 of file task.h.

144  {
145  return thiz->parent;
146 }
struct _zrtos_task_t * parent
Definition: task.h:38
Here is the caller graph for this function:

◆ zrtos_task__get_previous_task()

zrtos_task_t* zrtos_task__get_previous_task ( zrtos_task_t thiz)

Definition at line 119 of file task.h.

119  {
122 }
#define zrtos_types__get_container_of(ptr, type, member)
Definition: types.h:69
zrtos_clist_node_t node
Definition: task.h:37
zrtos_clist_node_t * zrtos_clist_node__get_previous_node(zrtos_clist_node_t *node)
Definition: clist.h:50
Here is the call graph for this function:

◆ zrtos_task__get_stack_ptr()

zrtos_arch_stack_t* zrtos_task__get_stack_ptr ( zrtos_task_t thiz)

Definition at line 128 of file task.h.

128  {
129  return thiz->stack_ptr;
130 }
zrtos_arch_stack_t * stack_ptr
Definition: task.h:39
Here is the caller graph for this function:

◆ zrtos_task__init()

bool zrtos_task__init ( zrtos_task_t thiz,
zrtos_arch_stack_t stack_ptr 
)

Definition at line 44 of file task.h.

47  {
48  if(zrtos_clist_node__init(&thiz->node)){
49  thiz->parent = 0;
50  thiz->stack_ptr = stack_ptr;
51  thiz->ticks = 0;
52  thiz->error_code = 0;
53  return true;
54  }
55  return false;
56 }
zrtos_error_t error_code
Definition: task.h:41
struct _zrtos_task_t * parent
Definition: task.h:38
zrtos_clist_node_t node
Definition: task.h:37
zrtos_arch_stack_t * stack_ptr
Definition: task.h:39
bool zrtos_clist_node__init(zrtos_clist_node_t *thiz)
Definition: clist.h:33
zrtos_task_tick_t ticks
Definition: task.h:40
Here is the call graph for this function:
Here is the caller graph for this function:

◆ zrtos_task__init_ex()

bool zrtos_task__init_ex ( zrtos_task_t thiz,
zrtos_arch_stack_t heap,
zrtos_arch_callback_t  callback,
void *  args 
)

Definition at line 58 of file task.h.

63  {
64  return zrtos_task__init(
65  thiz
67  heap
68  //,heap_size
69  ,callback
70  ,args
71  )
72  );
73 }
bool zrtos_task__init(zrtos_task_t *thiz, zrtos_arch_stack_t *stack_ptr)
Definition: task.h:44
#define zrtos_arch__cpu_state_init
Definition: atmega2560.h:187
Here is the call graph for this function:
Here is the caller graph for this function:

◆ zrtos_task__is_done()

bool zrtos_task__is_done ( zrtos_task_t thiz)

Definition at line 98 of file task.h.

98  {
99  return (thiz->ticks & ZRTOS_TASK_STATE__DONE) > 0;
100 }
zrtos_task_tick_t ticks
Definition: task.h:40
Here is the caller graph for this function:

◆ zrtos_task__is_ready()

bool zrtos_task__is_ready ( zrtos_task_t thiz)

Definition at line 90 of file task.h.

90  {
91  return thiz->ticks == 0;
92 }
zrtos_task_tick_t ticks
Definition: task.h:40
Here is the caller graph for this function:

◆ zrtos_task__is_running()

bool zrtos_task__is_running ( zrtos_task_t thiz)

Definition at line 94 of file task.h.

94  {
95  return (thiz->ticks & ZRTOS_TASK_STATE__RUNNING) > 0;
96 }
zrtos_task_tick_t ticks
Definition: task.h:40

◆ zrtos_task__on_tick()

void zrtos_task__on_tick ( zrtos_task_t thiz)

Definition at line 83 of file task.h.

83  {
84  zrtos_task_tick_t val = thiz->ticks;
85  if(0 == (val & ZRTOS_TASK_STATE__MASK)){
86  thiz->ticks -= (val > 0);
87  }
88 }
unsigned int zrtos_task_tick_t
Definition: task.h:24
zrtos_task_tick_t ticks
Definition: task.h:40
Here is the caller graph for this function:

◆ zrtos_task__set_delay_ms()

void zrtos_task__set_delay_ms ( zrtos_task_t thiz,
zrtos_task_tick_t  ms 
)

Definition at line 75 of file task.h.

75  {
76 #if ZRTOS_BOARD__TICK_PERIOD_MS == 1
77  thiz->ticks = ms;
78 #else
79  thiz->ticks = ms ? (ms / ZRTOS_BOARD__TICK_PERIOD_MS) : 0;
80 #endif
81 }
#define ZRTOS_BOARD__TICK_PERIOD_MS
Definition: ansi_c.h:18
zrtos_task_tick_t ticks
Definition: task.h:40
Here is the caller graph for this function:

◆ zrtos_task__set_done()

void zrtos_task__set_done ( zrtos_task_t thiz)

Definition at line 110 of file task.h.

110  {
111  thiz->ticks |= ZRTOS_TASK_STATE__DONE;
112 }
zrtos_task_tick_t ticks
Definition: task.h:40
Here is the caller graph for this function:

◆ zrtos_task__set_errno()

void zrtos_task__set_errno ( zrtos_task_t thiz,
zrtos_error_t  error_code 
)

Definition at line 132 of file task.h.

132  {
133  thiz->error_code = error_code;
134 }
zrtos_error_t error_code
Definition: task.h:41
Here is the caller graph for this function:

◆ zrtos_task__set_parent()

void zrtos_task__set_parent ( zrtos_task_t thiz,
zrtos_task_t parent 
)

Definition at line 140 of file task.h.

140  {
141  thiz->parent = parent;
142 }
struct _zrtos_task_t * parent
Definition: task.h:38
Here is the caller graph for this function:

◆ zrtos_task__set_ready()

void zrtos_task__set_ready ( zrtos_task_t thiz)

Definition at line 102 of file task.h.

102  {
103  thiz->ticks ^= (thiz->ticks & ZRTOS_TASK_STATE__MASK);
104 }
zrtos_task_tick_t ticks
Definition: task.h:40

◆ zrtos_task__set_running()

void zrtos_task__set_running ( zrtos_task_t thiz)

Definition at line 106 of file task.h.

106  {
108 }
zrtos_task_tick_t ticks
Definition: task.h:40

◆ zrtos_task__set_stack_ptr()

void zrtos_task__set_stack_ptr ( zrtos_task_t thiz,
zrtos_arch_stack_t stack_ptr 
)

Definition at line 124 of file task.h.

124  {
125  thiz->stack_ptr = stack_ptr;
126 }
zrtos_arch_stack_t * stack_ptr
Definition: task.h:39
Here is the caller graph for this function: