Is there some recommended way to increase number of priority levels in case I have to schedule more tasks than 15 and they should all be clearly prioritized (not on the same level)?
I can not think of a way of doing that with TSKs only, one idea that comes to mind is to use SWIs for the threads with higher priority.
SWIs are a bit different then tasks, but if you can adapt you program to use them, you get 15 more priority levels above the task with higher priority.
- Mariana
---------------------------------------------------------------------------------------------------------Please click the Verify Answer button on this post if it answers your question.---------------------------------------------------------------------------------------------------------
I thought that maybe it might be possible to change somehow BIOS kernel. I believe that number 15 was chosen because it's no too big (to slow down scheduling) and not small, too.
I thought that maybe there is a way to make number 15 custom. I found that in knl.h (in BIOS include directory) there is
#define KNL_MAXPRI (15) /* maximum task priority */
and in tsk.h TSK_Config structure:
Int PRIORITY;
So there should be no problem to define KNL_MAXPRI to 32 since it's stored later in Int. Maybe scheduler is written in fixed way so it can support only 15 levels.
DSP/BIOS is designed for 15 task priority levels and I do not believe this value should be changed.
As Mariana indicated, you should consider the use of SWIs to increase the number of priority levels.
Harry.