Когда надо запрещать все прерывания, когда изменяем таблицу прерываний, или уже когда наш обработчик что-то выполняет?
Сообщение отредактировано: Oleg_Z -
Резиденты. Запрет прерываний., CLI |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
Резиденты. Запрет прерываний., CLI |
Altair |
Сообщение
#1
|
Ищущий истину Группа: Пользователи Сообщений: 4 825 Пол: Мужской Реальное имя: Олег Репутация: 45 |
Когда надо запрещать все прерывания, когда изменяем таблицу прерываний, или уже когда наш обработчик что-то выполняет?
Сообщение отредактировано: Oleg_Z - -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
CJ |
Сообщение
#2
|
Пионер Группа: Пользователи Сообщений: 84 Пол: Мужской Репутация: 2 |
Наверно программно через Пас, никак, может ошибаюсь.
Но если теретически, то необходимо просто перехватить запрос на прерывание, и... Что нить с ним сделать, отклонить как нибудь. Сообщение отредактировано: CJ - -------------------- * Origin: "It's MY LIFE!!! © Jhon Bon Jovi"
|
Altair |
Сообщение
#3
|
Ищущий истину Группа: Пользователи Сообщений: 4 825 Пол: Мужской Реальное имя: Олег Репутация: 45 |
Через пас можно - ASM CLI END;
Только когда делать это, Вот скелет резидента: {...} {$F+} procedure zamena_prerivania; begin {...} end; {$F-} {...} begin {...} end. Так вот, где в нем надо обрамить в запрет и разрешение прерываний? -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
CJ |
Сообщение
#4
|
Пионер Группа: Пользователи Сообщений: 84 Пол: Мужской Репутация: 2 |
А каким образом ОБРАМИТЬ?
-------------------- * Origin: "It's MY LIFE!!! © Jhon Bon Jovi"
|
Altair |
Сообщение
#5
|
Ищущий истину Группа: Пользователи Сообщений: 4 825 Пол: Мужской Реальное имя: Олег Репутация: 45 |
Я имею ввиду какой кусок кода должен выполняться С ЗАПРЕЩЕНИЕМ ВСЕХ ПРЕРЫВАНИЙ.
обрамить - CLI (запрет прерываний) и еще есть команда разрешения их. -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
BlackShadow |
Сообщение
#6
|
Гость |
Менять вектор можно без CLI, если он один. Если ты меняешь стадо векторов, а твоя прога рассчитанана то, что замена происходит "в один такт", то лучше обрамить и этот момент. А внутри своего обработчика аппаратного прерывания это просто необходимо.
|
Altair |
Сообщение
#7
|
Ищущий истину Группа: Пользователи Сообщений: 4 825 Пол: Мужской Реальное имя: Олег Репутация: 45 |
Угу, все спасибо.
-------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
FreeMan |
Сообщение
#8
|
- Группа: Пользователи Сообщений: 480 Пол: Мужской Репутация: 4 |
Команда разрешения прерываний - STI
-------------------- бб
|
Dark |
Сообщение
#9
|
Знаток Группа: Пользователи Сообщений: 408 Пол: Мужской Репутация: 3 |
Я бы лучше и когда один изменял бы - устанавливал запрет...
-------------------- - Где я?
- Во тьме. - В какой тьме? - Во тьме твоего мозга. |
BlackShadow |
Сообщение
#10
|
Гость |
Замена происходит в 1 операцию (если делать грамотно). Во время выполнения операции INT'ы явно не генеряться.
|
Текстовая версия | 29.03.2024 21:08 |