Вытеснение во FreeBSD
Сейчас я ищу кусок исходного кода, который рассматривает выгрузку ядра во FreeBSD.
В ядре Linux существует файл c-source с именем "sched.c", в котором макрос set_current_state() используется для установки состояния процесса (TASK_RUNNING, TASK_INTERRUPTIBLE или чего-либо еще). Эти макросы определены в "sched.h". Не могли бы вы сказать мне соответствующий исходный файл (файлы) (который имеет определение этих макросов, если они существуют во FreeBSD) в дереве исходных текстов ядра FreeBSD?
1 ответ
Соответствующие файлы src/sys/kern/sched_4bsd.c
(Планировщик 4BSD) и src/sys/kern/sched_ule.c
(ULE планировщик). Но здесь нет TASK_* define или set_current_state() макроса, поскольку FreeBSD и Linux используют разные планировщики.
Возможно, вам придется прочитать один из них (я рекомендую 4bsd, так как это проще), чтобы найти то, что вас интересует.
Кстати, был проект для портирования планировщика BFS в Linux, код там есть http://rudot.blog.com/. Вы можете найти это полезным.