Модификация таблицы дескрипторов прерываний (IDT) - PullRequest
2 голосов
/ 11 января 2011

В потоке управления в ядре linux обнаружил, что управление перемещается в IDT, которая имеет местоположение прерываний (например, системный вызов 0x80) И тогда управление переходит к соответствующему системному вызову. Также прочитайте, что IDT инициализируется только во время загрузки.

Я хотел бы узнать больше об информации IDT из реального ядра, например о его местонахождении. Также хотелось бы знать, не изменено ли в любое другое время?

Пожалуйста, помогите.

Ответы [ 2 ]

5 голосов
/ 11 января 2011

Написание руктита, не так ли?

В любом случае, вы можете использовать инструкции LIDT / SIDT x86 для непосредственного поиска и манипулирования IDT.Вы также можете найти некоторую информацию о подключении IDT к некоторым хорошим phrack статьям , касающимся именно этой темы.

1 голос
/ 11 января 2011

В Linux объявления для функций обработки IRQ можно найти в include / linux / interrupt.h .Общий код обработки можно найти в kernel / irq / , а код для конкретной платформы в каталоге arch / - смотрите, например, arch / x86 / kernel / irq.c идругие файлы irq * .c в этом каталоге.

Вы должны прочитать комментарии в файлах kernel / irc / *. c, чтобы понять правила и механизмы блокировки IRQ в Linux.Обратите внимание, что другие ОС могут иметь и будут иметь другие правила блокировки.Удачи!

...