Я работаю с исходным кодом ядра Linux для побочного проекта, который я хочу сделать. Я успешно зарегистрировал свой класс планирования и использовал RBTree's RBTree для моего HVF_RQ (я намерен свой планировщик планировать на основе наивысшего значения, рассчитанного по операции между тремя полями, которые я добавил в struct task_struk Runqueue. Эта функция принимает три аргумента (в соответствии с функцией указателя enqueue_task члена rad_class), а третий - флаги int . Мой вопрос об обращении с этими флагами соответствующим образом. В ядре файла/sched/sched.h есть приведенный приведенный фрагмент комментариев, описывающий ситуацию:
Код: Выделить всё
/*
* {de,en}queue flags:
*
* DEQUEUE_SLEEP - task is no longer runnable
* ENQUEUE_WAKEUP - task just became runnable
*
* SAVE/RESTORE - an otherwise spurious dequeue/enqueue, done to ensure tasks
* are in a known state which allows modification. Such pairs
* should preserve as much state as possible.
*
* MOVE - paired with SAVE/RESTORE, explicitly does not preserve the location
* in the runqueue.
*
* NOCLOCK - skip the update_rq_clock() (avoids double updates)
*
* MIGRATION - p->on_rq == TASK_ON_RQ_MIGRATING (used for DEADLINE)
*
* ENQUEUE_HEAD - place at front of runqueue (tail if not specified)
* ENQUEUE_REPLENISH - CBS (replenish runtime and postpone deadline)
* ENQUEUE_MIGRATED - the task was migrated during wakeup
* ENQUEUE_RQ_SELECTED - ->select_task_rq() was called
*
*/
Я могу легко понять, что enqueue_wakeup является нормальным условием, когда вы вычисляете ключ и вставляете runcequeue's cheduled_hvf_entity (соответствующая Prade_entity, которую я сделал) в Runqueue of планировщика (если другой флаг не связан с его (используя оператор). Также я могу справедливо сказать, что enqueue_head описывает желание поставить задачу на голову runqueue (наиболее правый из дерева в моем случае) (в основном эти два флага будут установлены в паре с использованием | Если вызывающий намерен срочно поставить задачу). В других флагах будет апроприночная обработка?
Подробнее здесь:
https://stackoverflow.com/questions/796 ... ling-class