enqueue_task_rt
関数 in./kernel/sched/rt.c
は、タスクを実行キューにキューイングする役割を果たします。enqueue_task_rt
call to enqueue_rt_entity
which callsが含まれていますdequeue_rt_stack
。コードの大部分は論理的に見えますが、関数dequeue_rt_stack
が何をするのか理解できないため、少し迷っています。誰かが私が見逃しているロジックが何であるかを教えてもらえますか、または良い読み物を提案できますか.
編集:以下はdequeue_rt_stack
関数のコードです
struct sched_rt_entity *back = NULL;
/* macro for_each_sched_rt_entity defined as
for(; rt_se; rt_se = rt_se->parent)*/
for_each_sched_rt_entity(rt_se) {
rt_se->back = back;
back = rt_se;
}
for (rt_se = back; rt_se; rt_se = rt_se->back) {
if (on_rt_rq(rt_se))
__dequeue_rt_entity(rt_se);
}
より具体的には、このコードが必要な理由がわかりません。
for_each_sched_rt_entity(rt_se) {
rt_se->back = back;
back = rt_se;
}
その関連性は何ですか。