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)?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
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.
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.