Аппаратные прерывания

  • Автор темы netex
  • Дата начала
Статус
Закрыто для дальнейших ответов.
N

netex

Гость
#1
Немного поясню задачу. Хочу сделать обработчик физического прерывания.
Сделать его не зависимым от Windows, т.е. пришло прерывание, процессор перешел по IDT, и никакие IRQL не мешали.
Обработчик не на уровне ОС, а на уровне "железа" и работы процессора.
Вот примерный план действий:
В однопроцессорной системе делаем обработчик прерывания.
Изменяем соответствующий вектор в IDT.(изменяем адрес обработчика, тип - шлюз прерывания)
В обработчике НЕ разрешаем прерывания.(sti сделаем при выходе)

Значит ли это, что система не сможет получить управление до команды sti? (т.е. Windows переключает задачи именно по таймеру irq0?)
В случае аппаратного прерывания в APIC будут ли маскироваться прерывания с меньшим(таким же) приоритетом, что и текущее, которое мы обрабатываем?(в i8259A маскируются и после обработки нужно послать 20h в порт 20h)

После обработки прерывания нужно ли что-то делать с APIC, как например с i8259A (послать 20h в порт 20h)?

Можно ли вызывать из такого обработчика (с запрещенными прерываниями) вызывать функции ОС (например: поместить DPC в очередь или RaiseIRQL)?

Если у вас есть другие идеи, расскажите о них, буду только благодарен.

Вообще хотел получить побольше информации как сделать обработчик на многопроцессорной системе.
Каким образом можно поправить все IDT на всех процессорах?
 
Статус
Закрыто для дальнейших ответов.