enqueue_task_rt関数 in./kernel/sched/rt.cは、タスクを実行キューにキューイングする役割を果たします。enqueue_task_rtcall to enqueue_rt_entitywhich 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;
     }
その関連性は何ですか。