Hello,
Why does not RTX implement a reference counter for its "tsk_lock"/"tsk_unlock" mechanism? The way things are implemented at the moment, any task that calls "tsk_unlock" enables the scheduler. But this can cause problems in nested calls; And, can cause a RTX kernel corruption if some code calls this from interrupt mode while a task is executing a RTX API (which assumes scheduler is disabled). There is no indication in the user manual that the kernel can be damaged if the scheduler is enabled from interrupt mode (NOTE: enabling the scheduler from interrupt mode only sets an interrupt line which is inherently safe!). FreeRTOS has this feature (and much more). Why not RTX?
I know who I vote for...
I can see no need for tsk_lock/tsk_unlock.
The g_application_alive_signals needs to be updated atomic, if accessed also from the IRQ handler. That has nothing to do with the tsk_lock()/tsk_unlock(). The usage of those function is highly deprecated.
Just a short follow up:
Keil have updated the user manual of RTX to indicate that calling "tsk_unlock" from privileged mode is not allowed.