Skip to content

Commit 2148812

Browse files
committed
Add sched_migrate_task() helper
This commit introduces a new helper, sched_migrate_task(), which migrates a task between ready queues of different priority levels.
1 parent c0416a1 commit 2148812

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

kernel/task.c

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -410,6 +410,27 @@ void sched_dequeue_task(tcb_t *task)
410410
return;
411411
}
412412

413+
/* Task migration from origin to new priority ready queue */
414+
static void sched_migrate_task(tcb_t *task, int16_t priority)
415+
{
416+
if (unlikely(!task || !is_valid_priority(priority)))
417+
return;
418+
419+
if (task->prio == priority)
420+
return;
421+
422+
/* Remove task node from origin ready queue */
423+
sched_dequeue_task(task);
424+
425+
/* Update new properties */
426+
task->prio = priority;
427+
task->prio_level = extract_priority_level(priority);
428+
429+
/* Enqueue task node into new priority ready queue*/
430+
sched_enqueue_task(task);
431+
return;
432+
}
433+
413434
/* Handle time slice expiration for current task */
414435
void sched_tick_current_task(void)
415436
{

0 commit comments

Comments
 (0)