СПОСОБ ДОСТАВКИ ПРЕРЫВАНИЙ В ДРАЙВЕРЫ ПОЛЬЗОВАТЕЛЬСКОГО РЕЖИМА

1. Способ независимой от устройства обработки прерываний, содержащий этапы, на которых:
регистрируют драйвер устройства в операционной системе;
предоставляют независимую от устройства службу прерывания как службу ядра;
предоставляют интерфейс, который вызывается упомянутым драйвером, чтобы активировать прерывание;
выполняют общую процедуру службы прерывания при получении упомянутого прерывания; и
обрабатывают упомянутое прерывание посредством упомянутого драйвера устройства.
2. Способ по п.1, дополнительно содержащий этапы, на которых:
маскируют упомянутое прерывание в процессоре до выполнения упомянутой процедуры службы прерывания;
блокируют упомянутое прерывание на более низком уровне чем уровень упомянутого процессора, чтобы предотвратить ситуацию, когда упомянутое прерывание достигает упомянутого процессора;
демаскируют упомянутое прерывание в упомянутом процессоре; и
активируют упомянутое прерывание на упомянутом более низком уровне, чем уровень упомянутого процессора, после обработки упомянутого прерывания.
3. Способ по п.2, в котором блокирование упомянутого прерывания выполняют в усовершенствованном программируемом контроллере прерываний (APIC) или контроллере шины.
4. Способ по п.1, сверх того, содержащий этапы, на которых:
предоставляют механизм планирования для совместного использования упомянутого прерывания;
вызывают все драйверы, совместно использующие упомянутое прерывание; и
поддерживают упомянутое блокирование упомянутого прерывания до тех пор, пока все драйверы не сделают возврат из упомянутой обработки упомянутого прерывания.
5. Способ по п.4, дополнительно содержащий этап, на котором устанавливают счетчик, равным количеству драйверов, совместно использующих упомянутое прерывание.
6. Способ по п.5, дополнительно содержащий этап, на котором отрицательными приращениями уменьшают значение упомянутого счетчика до нуля до активации упомянутого прерывания.
7. Способ по п.4, в котором второй драйвер предоставлен на уровне режима ядра, и упомянутый способ выполняется как для драйверов пользовательского режима, так и для драйверов режима ядра.
8. Способ по п.1, в котором упомянутая служба ядра является общей службой, которая независима от устройства, обслуживаемого упомянутым драйвером, при этом упомянутый драйвер является драйвером пользовательского режима.
9. Способ обработки драйверов устройств пользовательского режима, содержащий этапы, на которых:
регистрируют упомянутые драйверы устройств пользовательского режима в операционной системе;
предоставляют общую службу прерывания как службу ядра, причем упомянутая служба прерывания предоставляет интерфейс, который вызывается упомянутыми драйверами устройств пользовательского режима;
маскируют упомянутое прерывание в процессоре до выполнения упомянутой процедуры общей службы прерывания; и
блокируют упомянутое прерывание на более низком уровне, чем уровень упомянутого процессора, чтобы предотвратить ситуацию, когда упомянутое прерывание достигает упомянутого процессора.
10. Способ по п.9, дополнительно содержащий этапы, на которых:
активируют упомянутое прерывание, когда драйвер устройства пользовательского режима вызывает упомянутый интерфейс; и
активируют упомянутое прерывание на упомянутом более низком уровне чем уровень упомянутого процессора после того, как подходящий драйвер устройства пользовательского режима обрабатывает упомянутое прерывание.
11. Способ по п.10, в котором блокирование упомянутого прерывания выполняют в APIC или контроллере шины.
12. Способ по п.10, дополнительно содержащий этапы, на которых:
предоставляют механизм планирования для совместно используемых прерываний;
вызывают все драйверы устройств пользовательского режима, ассоциированные с упомянутыми совместно используемыми прерываниями; и
поддерживают упомянутое блокирование упомянутого прерывания до тех пор, пока все драйверы устройств пользовательского режима не сделают возврат из обработки упомянутого прерывания.
13. Способ по п.12, дополнительно содержащий этапы, на которых:
исполняют упомянутый механизм планирования для нерегистрированных или неизвестных устройств; и
блокируют упомянутое нерегистрированное или неизвестное устройство.
14. Способ по п.9, в котором есть драйверы устройств режима ядра, и упомянутый способ выполняется как для упомянутых драйверов устройств пользовательского режима, так и для драйверов устройств режима ядра.
15. Машиночитаемый носитель с хранимыми на нем инструкциями для обработки драйверов устройств пользовательского режима, причем упомянутые инструкции осуществляют способ, содержащий этапы, на которых:
регистрируют упомянутые драйверы устройств пользовательского режима в операционной системе;
предоставляют службу прерывания как службу ядра, причем упомянутая служба прерывания предоставляет интерфейс, который вызывается упомянутыми драйверами устройств пользовательского режима; и
предоставляют общую процедуру службы прерывания, которая независима от устройств, ассоциированных с упомянутыми драйверами устройств пользовательского режима.
16. Машиночитаемый носитель по п.15, дополнительно содержащий инструкции для:
активации упомянутого прерывания, когда драйвер устройства пользовательского режима вызывает упомянутый интерфейс; и
блокирования упомянутого прерывания на более низком уровне чем уровень процессора после выполнения упомянутой процедуры общей службы прерывания, чтобы предотвратить ситуацию, когда упомянутое прерывание достигает упомянутого процессора; и
активации упомянутого прерывания после выполнения упомянутой общей службы прерывания.
17. Машиночитаемый носитель по п.16, в котором блокирование упомянутого прерывания происходит в APIC или в контроллере шины.
18. Машиночитаемый носитель по п.16, дополнительно содержащий инструкции для:
предоставления механизма планирования для совместно используемых прерываний;
вызова всех драйверов устройств пользовательского режима, ассоциированных с упомянутыми совместно используемыми прерываниями; и
поддержания упомянутого блокирования упомянутого прерывания до тех пор, пока все драйверы устройств пользовательского режима не сделают возврат из обработки упомянутого прерывания.
19. Машиночитаемый носитель по п.18, дополнительно содержащий инструкции для:
исполнения упомянутого механизма планирования для нерегистрированных или неизвестных устройств; и
блокирования упомянутого нерегистрированного или неизвестного устройства.
20. Машиночитаемый носитель по п.18, в котором есть драйверы устройств режима ядра, и упомянутые инструкции выполняются как для упомянутых драйверов устройств пользовательского режима, так и для драйверов устройств режима ядра.