Добавление записи в task_struct и инициализация значением по умолчанию

#linux-kernel #linux-device-driver #embedded-linux

#linux-ядро #linux-драйвер устройства #встроенный-linux

Вопрос:

Я хочу добавить запись в структуру блока управления процессом ( task_struct ). Допустим, способ пометить некоторый процесс. Я хочу инициализировать это поле равным 0 для всех процессов, кроме «некоторых специальных процессов», позже, вызвав sched_setscheduler() , я установлю этот флаг для «специальных процессов».

У кого-нибудь есть идея, как присвоить значение по умолчанию переменной-члену в task_struct ?

Ответ №1:

Я предполагаю, что вы говорите о недавнем ядре Linux, потому что детали реализации меняются со временем.

Есть два варианта. Первое — вы можете установить значение переменной в init_task глобальном. Посмотрите, как это делается в linux/init_task.h заголовке. Второй вариант — добавить код в copy_process , что вы, возможно, захотите сделать в любом случае, чтобы правильно обработать fork() наследование добавляемого вами поля.