54 #include "../arch/tn_arch.h"
87 #define TN_STACK_ARR_DEF(name, size) \
88 TN_ARCH_STK_ATTR_BEFORE \
89 TN_UWord name[ (size) ] \
90 TN_ARCH_STK_ATTR_AFTER
93 #if TN_CHECK_BUILD_CFG
99 #if defined (__TN_ARCH_PIC24_DSPIC__)
101 # define _TN_BUILD_CFG_ARCH_STRUCT_FILL(_p_struct) \
103 (_p_struct)->arch.p24.p24_sys_ipl = TN_P24_SYS_IPL; \
107 # define _TN_BUILD_CFG_ARCH_STRUCT_FILL(_p_struct)
119 #define _TN_BUILD_CFG_STRUCT_FILL(_p_struct) \
121 memset((_p_struct), 0x00, sizeof(*(_p_struct))); \
123 (_p_struct)->priorities_cnt = TN_PRIORITIES_CNT; \
124 (_p_struct)->check_param = TN_CHECK_PARAM; \
125 (_p_struct)->debug = TN_DEBUG; \
126 (_p_struct)->use_mutexes = TN_USE_MUTEXES; \
127 (_p_struct)->mutex_rec = TN_MUTEX_REC; \
128 (_p_struct)->mutex_deadlock_detect = TN_MUTEX_DEADLOCK_DETECT; \
129 (_p_struct)->tick_lists_cnt_minus_one = (TN_TICK_LISTS_CNT - 1); \
130 (_p_struct)->api_make_alig_arg = TN_API_MAKE_ALIG_ARG; \
131 (_p_struct)->profiler = TN_PROFILER; \
132 (_p_struct)->profiler_wait_time = TN_PROFILER_WAIT_TIME; \
133 (_p_struct)->stack_overflow_check = TN_STACK_OVERFLOW_CHECK; \
134 (_p_struct)->dynamic_tick = TN_DYNAMIC_TICK; \
135 (_p_struct)->old_events_api = TN_OLD_EVENT_API; \
137 _TN_BUILD_CFG_ARCH_STRUCT_FILL(_p_struct); \
143 #define _TN_BUILD_CFG_STRUCT_FILL(_p_struct)
145 #endif // TN_CHECK_BUILD_CFG
343 #define TN_NO_TIME_SLICE 0
348 #define TN_MAX_TIME_SLICE 0xFFFE
390 unsigned int idle_task_stack_size,
392 unsigned int int_stack_size,
592 #if TN_DYNAMIC_TICK || defined(DOXYGEN_ACTIVE)
unsigned mutex_rec
Value of TN_MUTEX_REC
unsigned old_events_api
Value of TN_OLD_EVENT_API
TN_UWord tn_arch_sched_dis_save(void)
Disable kernel scheduler and return previous state.
Circular doubly linked list, for internal kernel usage.
unsigned mutex_deadlock_detect
Value of TN_MUTEX_DEADLOCK_DETECT
TN_Context
System context.
unsigned profiler_wait_time
Value of TN_PROFILER_WAIT_TIME
deadlock is active Note: this feature works if only TN_MUTEX_DEADLOCK_DETECT is non-zero.
TN_RCode
Result code returned by kernel services.
#define _TN_INLINE
If compiler does not conform to c99 standard, there's no inline keyword.
None: this code is possible if only system is not running (flag (TN_STATE_FLAG__SYS_RUNNING is not se...
unsigned use_mutexes
Value of TN_USE_MUTEXES
unsigned long TN_TickCnt
Type for system tick count, it is used by the kernel to represent absolute tick count value as well a...
static _TN_INLINE TN_BOOL tn_is_isr_context(void)
Returns whether current system context is TN_CONTEXT_ISR
TN_TaskBody * tn_cur_task_body_get(void)
Returns pointer to the body function of the currently running task.
union _TN_BuildCfg::@0 arch
Architecture-dependent values.
TN_UWord dummy
On some architectures, we don't have any arch-dependent build-time options, but we need this "dummy" ...
void tn_arch_sched_restore(TN_UWord sched_state)
Restore state of the kernel scheduler.
void( TN_CBTickSchedule)(TN_TickCnt timeout)
Available if only TN_DYNAMIC_TICK is set.
void tn_callback_deadlock_set(TN_CBDeadlock *cb)
Set callback function that should be called whenever deadlock occurs or becomes inactive (say...
TN_TickCnt( TN_CBTickCntGet)(void)
Available if only TN_DYNAMIC_TICK is set.
static _TN_INLINE TN_BOOL tn_is_task_context(void)
Returns whether current system context is TN_CONTEXT_TASK
Timer is a kernel object that is used to ask the kernel to call some user-provided function at a part...
void tn_sys_start(TN_UWord *idle_task_stack, unsigned int idle_task_stack_size, TN_UWord *int_stack, unsigned int int_stack_size, TN_CBUserTaskCreate *cb_user_task_create, TN_CBIdle *cb_idle)
Initial TNeo system start function, never returns.
unsigned api_make_alig_arg
Value of TN_API_MAKE_ALIG_ARG
Dispatch configuration: set predefined options, include user-provided cfg file as well as default cfg...
enum TN_StateFlag tn_sys_state_flags_get(void)
Returns current system state flags.
void( TN_CBUserTaskCreate)(void)
User-provided callback function that is called directly from tn_sys_start() as a part of system start...
void( TN_CBDeadlock)(TN_BOOL active, struct TN_Mutex *mutex, struct TN_Task *task)
User-provided callback function that is called whenever deadlock becomes active or inactive...
Structure with build-time configurations values; it is needed for run-time check which ensures that b...
void tn_callback_dyn_tick_set(TN_CBTickSchedule *cb_tick_schedule, TN_CBTickCntGet *cb_tick_cnt_get)
Available if only TN_DYNAMIC_TICK is set.
static _TN_INLINE TN_UWord tn_sched_dis_save(void)
Disable kernel scheduler and return previous scheduler state.
static _TN_INLINE void tn_sched_restore(TN_UWord sched_state)
Restore state of the kernel scheduler.
enum TN_Context tn_sys_context_get(void)
Returns system context: task or ISR.
int priority
current task priority
TN_TickCnt tn_sys_time_get(void)
Get current system ticks count.
void tn_callback_stack_overflow_set(TN_CBStackOverflow *cb)
Set callback function that is called when the kernel detects stack overflow (see TN_STACK_OVERFLOW_CH...
struct TN_Task * tn_cur_task_get(void)
Returns pointer to the currently running task.
void( TN_CBIdle)(void)
User-provided callback function that is called repeatedly from the idle task loop.
unsigned priorities_cnt
Value of TN_PRIORITIES_CNT
unsigned p24_sys_ipl
Value of TN_P24_SYS_IPL
enum TN_RCode tn_sys_tslice_set(int priority, int ticks)
Set time slice ticks value for specified priority (see Round-robin scheduling).
unsigned dynamic_tick
Value of TN_DYNAMIC_TICK
unsigned tick_lists_cnt_minus_one
Value of TN_TICK_LISTS_CNT minus one.
unsigned check_param
Value of TN_CHECK_PARAM
void( TN_TaskBody)(void *param)
Prototype for task body function.
void tn_tick_int_processing(void)
Process system tick; should be called periodically, typically from some kind of timer ISR...
unsigned debug
Value of TN_DEBUG
void( TN_CBStackOverflow)(struct TN_Task *task)
User-provided callback function that is called when the kernel detects stack overflow (see TN_STACK_O...
unsigned int TN_UWord
Unsigned integer type whose size is equal to the size of CPU register.
TN_StateFlag
System state flags.
unsigned stack_overflow_check
Value of TN_STACK_OVERFLOW_CHECK
#define TN_BOOL
boolean type definition
struct _TN_BuildCfg::@0::@1 p24
PIC24/dsPIC-dependent values.
unsigned profiler
Value of TN_PROFILER