Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2_Программирование РВ.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
94.21 Кб
Скачать

Программные прерывания

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(). Путем изменения этой функции можно изменить политику планирования.