scheduler: add task priority into scheduler

Check priority before check timeout delta to make sure task with higher
priority run first.

Signed-off-by: Pan Xiuli <xiuli.pan@linux.intel.com>
This commit is contained in:
Pan Xiuli 2018-09-11 18:41:00 +08:00
parent 85e1c0d738
commit 38d541fee9
1 changed files with 10 additions and 3 deletions

View File

@ -98,6 +98,7 @@ static inline struct task *edf_get_next(uint64_t current,
struct list_item *clist;
struct list_item *tlist;
uint64_t next_delta = UINT64_MAX;
int next_priority = TASK_PRI_LOW;
uint64_t delta;
uint64_t deadline;
int reschedule = 0;
@ -126,15 +127,21 @@ static inline struct task *edf_get_next(uint64_t current,
/* include the length of task in deadline calc */
deadline = task->deadline - task->max_rtime;
/* get earliest deadline */
if (current < deadline) {
delta = deadline - current;
if (delta < next_delta) {
/* get highest priority */
if (task->priority < next_priority) {
next_priority = task->priority;
next_delta = delta;
next_task = task;
} else if (task->priority == next_priority) {
/* get earliest deadline */
if (delta < next_delta) {
next_delta = delta;
next_task = task;
}
}
} else {
/* missed scheduling - will be rescheduled */
trace_pipe("ed!");