I would like to briefly increase the priority of a currently running task and then revert the priority level.
The example given at:
www.keil.com/.../rlarm_os_tsk_prio_self.htm
shows how to do this.
void task1 (void) __task { . . os_tsk_prio_self(10); /* Increase its priority, for the critical section */ . /* This is a critical section */ . os_tsk_prio_self(2); /* Decrease its priority at end of critical section */ . . }
Trouble is, I would like to include this boost within a routine used by various tasks. I know at design time what level to boost to, but the level to return to would need to be determined at run time.
OldPriority = CURRENT_TASK_PRIORITY_LEVEL; . . os_tsk_prio_self(10); . . os_tsk_prio_self(OldPriority);
I've looked for a function to determine the current task priority level, but cannot find one.
Anyone know of a way of doing this?
And a third alternative is to let the calling task send the "return" priority - and the calling task can use a #define or enum constant.