OSDev
http://osdev.su/

Программное прерывание не работает в третьем кольце
http://osdev.su/viewtopic.php?f=6&t=767
Страница 1 из 1

Автор:  vlad9486 [ 27 июл 2013, 00:37 ]
Заголовок сообщения:  Программное прерывание не работает в третьем кольце

Похоже, что у меня тоже самое, что и у него http://forum.osdev.org/viewtopic.php?f=1&t=10974. Прерывания работают, клавиатура читается и все такое. Когда делаю
Код:
__asm__("int $0x30"); while (1);

в ядре (в кольце 0), то все работает. Но когда это же делает непривилегированный код, то приходит GP с кодом 0x302 сообщающее о провинившийся записи в IDT (запись номер 0x30). У пользователя загружены cs и ss с RPL и DPL равными 3. В TSS DPL равно 0, но с 3 так же.
UPD: запись в IDT с номером 0x30 конечно же есть.

Автор:  vlad9486 [ 27 июл 2013, 02:03 ]
Заголовок сообщения:  Re: Программное прерывание не работает в третьем кольце

Исправил. Глупая ошибка: в IDT тоже есть DPL и для записи с программным прерыванием нужно его установить в 3. Может кому-нибудь тема поможет. Написал тому бедолаге, может поможет через 8 лет :)

Автор:  iz56 [ 27 июл 2013, 08:04 ]
Заголовок сообщения:  Re: Программное прерывание не работает в третьем кольце

Ну за восемь лет, скажем, тот человек, может и забыл что есть третье кольцо и пятое. А если кто ищет ответ на такую проблему - теперь точно найдёт.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/