TNeo
BETA v1.08-11-g97e5a6d
|
TNeo changelog
TN_USE_MUTEXES
or TN_MUTEX_DEADLOCK_DETECT
-pedantic
mode for Cortex-M architecturesRelease date: 2017-02-25
TN_TimerFunc
is called with global interrupts enabled.TN_FORCED_INLINE
TN_MAX_INLINE
Release date: 2015-03-17
TN_CHECK_PARAM
set to 0TN_PROFILER
or TN_STACK_OVERFLOW_CHECK
)TN_INIT_INTERRUPT_STACK_SPACE
tn_fmem_free_blocks_cnt_get()
/ tn_fmem_used_blocks_cnt_get()
) and items in the queue (tn_queue_free_items_cnt_get()
/ tn_queue_used_items_cnt_get()
).tn_tick_int_processing()
, since they aren't too useful there, but they add overhead (See bitbucket issue #2 )tn_sched_dis_save()
/ tn_sched_restore()
.enum TN_ObjId
) are moved to the beginning of object structures, to make memory corruptions detected earlier.Release date: 2015-01-02.
TN_STACK_OVERFLOW_CHECK
for details.struct TN_TaskTiming
for details.TN_OLD_EVENT_API
for details.TN_EVENTGRP_WMODE_AUTOCLR
flag which allows to clear event bits atomically when task successfully finishes waiting for these event bits.Added run-time check which ensures that build-time options for the kernel match ones for the application. For details, refer to the option TN_CHECK_BUILD_CFG
. Note: in your existing project that uses TNeo as a separate library, you need either:
<tneo_path>/src/tn_app_check.c
to the application project (recommended);tn_cfg.h
file, set TN_CHECK_BUILD_CFG
to 0
and rebuild the kernel with the new configuration (not recommended).But if you build TNeo together with the application, this option is useless, so then just set TN_CHECK_BUILD_CFG
to 0
.
lib_project
directory. If you use these library projects from the repository directly in your application, you need to modify path to the library project in your application project.Release date: 2014-11-04.
NULL
, BOOL
, TRUE
, FALSE
now have the TN_
prefix: TN_NULL
, TN_BOOL
, TN_TRUE
, TN_FALSE
. This is because non-prefixed symbols may be defined by some other program module, which leads to conflicts. The easiest and robust way is to add unique prefix.tneo.X
to tneo_pic32.X
.tn_soft_isr()
-> tn_p32_soft_isr()
, tn_srs_isr()
-> tn_p32_srs_isr()
. It is much easier to maintain documentation for different macros if they have different names; more, the signature of these macros is architecture-dependent. Old names are also available for backward compatibility.Release date: 2014-10-20.
examples/queue_eventgrp_conn
.tn_p32_soft_isr()
or tn_p32_srs_isr()
: interrupts can be defined with standard way too: this particular ISR will use task's stack instead of interrupt stack, therefore it takes much more RAM and works a bit faster. There are no additional constraints on ISR defined without kernel-provided macro: in either ISR, you can call the same set of kernel services. Refer to the page Interrupts for details.TN_PRIORITIES_CNT
.examples/queue
that demonstrates the pattern on how to use queue together with fixed memory pool effectively.Release date: 2014-10-14.
tn_sys_time_set()
function, because now TNeo uses internal system tick count for timers, and modifying system tick counter by user is a really bad idea.Release date: 2014-10-09.
tn_queue_receive()
and tn_fmem_get()
: if non-zero timeout
is in effect, then TN_RC_TIMEOUT
is returned, but user-provided pointer is altered anyway (some garbage data is written there). This bug was inherited from TNKernel.tn_task_state_get()
tn_sem_acquire()
and friends are renamed to tn_sem_wait()
and friends. More on this read here. Old name is still available through tn_oldsymbols.h
.Release date: 2014-10-01.