Программные прерывания
int
rtl_get_soft_irq(
void (*handler)(int, void *, struct pt_regs *),
const
char * devname);
Эта
функция размещает виртуальный номер
прерывания и задает для него функцию
как обработчик прерывания. Позже, это
виртуальное прерывание будет запущен
с помощью функции:
void
rtl_global_pend_irq(int ix);
Эта
функция безопасна при использовании в
потоках реального времени и в прерываниях
реального времени.
Функция
void
free_irq(unsigned int irq, void *dev_id);
является
функцией ядра Linux,
который снимает процедуру обработки
прерывания для прерывания "irq".
Для программных прерываний параметр
dev_id
должен быть равен 0.
Программные
прерывания использованы в реализации
FIFO
в Linux
реального времени (файл fifos/rtl_fifo.c).
Написание планировщика и изменение стандартного планировщика
Эта
сложная тема должен записываться позже.
Здесь только некоторые точки для
отталкивания:
Планировщик
реализован в файле:
scheduler/rtl_sched.c
и в файлах зависимых от архитектуры
(папки include/arch-i386
и scheduler/i386).
Решение
функциональности планировщика определена
в функции rtl_schedule().
Путем изменения этой функции можно
изменить политику планирования.