Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека разработчика Mac

Разработчик

Ссылка класса IOFilterInterruptEventSource

Опции
Развертывание Target:

На этой странице
Язык:

IOFilterInterruptEventSource

Фильтрация варианта $link IOInterruptEventSource.

Источник события прерывания, вызывающий клиент, чтобы определить, должно ли событие прерывания быть запланировано на цикл работы. Вызов источника события прерывания фильтра клиент в основном контексте прерывания, клиент может тогда опросить его аппаратные средства и определить, должно ли прерывание быть обработано уже.

Как подпрограмму вызывают в основном контексте прерывания, большую заботу нужно соблюдать в записи этой подпрограммы. В целом ни одну из универсальной среды IOKit не безопасно вызвать в этом контексте. Мы предназначаем эту подпрограмму, которая будет использоваться аппаратными средствами, которые могут опросить его регистры, не уничтожая состояние. Прежде всего этот вариант источников событий будет использоваться драйверами та доля прерывания. Подпрограмма фильтра определит, является ли прерывание реальным прерыванием или фантомом, и таким образом оптимизируйте контекстное переключение потока работы далеко.

При реализации 'SoftDMA' (или псевдо-DMA), Вы не можете хотеть, чтобы Набор I/O автоматически запустил Вашу подпрограмму обработчика прерываний на Вашем цикле работы, когда Ваша подпрограмма фильтра возвращает true. В этом случае можно принять решение иметь подпрограмму фильтра, планируют работу над самим циклом работы и затем возвращают false. Если Вы сделаете это, то прерывание не будет отключено в аппаратных средствах, и Вы могли бы получить дополнительные основные прерывания, прежде чем завершится Ваша служебная программа уровня цикла работы. Поскольку эта схема имеет импликации для синхронизации между Вашей подпрограммой фильтра и Вашей процедурой обработки прерывания, необходимо избежать делать это, если драйвер не требует SoftDMA.

CAUTION: Вызванный в основном контексте прерывания, если необходимо отключить прерывание для защиты Вас регистры против неожиданного вызова тогда, лучше использовать прямой IOInterruptEventSource и его вторичный механизм поставки прерывания.

Наследование


Не применимый

Соответствует


Не применимый

Оператор импорта


Не применимый

Objective C

@import Kernel;

Доступность


Доступный в OS X v10.0 и позже.
  • $link переопределения IOInterruptEventSource:: disableInterruptOccurred для создания выноски фильтра.

    Объявление

    C++

    virtual void disableInterruptOccurred( void *self, IOService *prov, int ind);

  • Факторный метод, чтобы создать и инициализировать IOFilterInterruptEventSource. Посмотрите $link init.

    Объявление

    C++

    static IOFilterInterruptEventSource * filterInterruptEventSource( OSObject *owner, IOInterruptEventSource::Action action, Filter filter, IOService *provider, int intIndex = 0);

    Параметры

    owner

    Владелец/клиент этого источника события.

    action

    'C' Функция для вызова, когда что-то происходит.

    filter

    'C' Функция для вызова, когда происходит прерывание.

    provider

    Служба, обеспечивающая прерывания.

    intIndex

    Значения по умолчанию к 0.

    Возвращаемое значение

    новый источник события, если успешный, 0 иначе.

  • Get'ter для filterAction переменной.

    Объявление

    C++

    virtual Filter getFilterAction() const;

    Возвращаемое значение

    значение filterAction.

  • Основной инициализатор для класса IOFilterInterruptEventSource.

    Объявление

    C++

    virtual bool init( OSObject *owner, IOInterruptEventSource::Action action, Filter filter, IOService *provider, int intIndex = 0);

    Параметры

    owner

    Владелец/клиент этого источника события.

    action

    'C' Функция для вызова, когда что-то происходит.

    filter

    'C' Функция для вызова в основном контексте прерывания.

    provider

    Служба, обеспечивающая прерывания.

    intIndex

    Источник прерывания в провайдере. Значения по умолчанию к 0.

    Возвращаемое значение

    истина, если наследованные классы и этот экземпляр инициализируют успешно.

  • $link переопределения IOInterruptEventSource:: normalInterruptOccured для создания выноски фильтра.

    Объявление

    C++

    virtual void normalInterruptOccurred( void *self, IOService *prov, int ind);

  • Заставьте цикл работы планировать действие.

    Объявление

    C++

    virtual void signalInterrupt();

    Обсуждение

    Заставьте цикл работы планировать действие прерывания, даже если подпрограмма фильтра возвращает 'false'. Обратите внимание условие прерывания MUST быть очищенными от аппаратных средств иначе произойдет, бесконечный цикл прерывания процесса. Используйте эту функцию, когда будет желаем SoftDMA. Посмотрите $link IOFilterInterruptSource:: Фильтр

Обратные вызовы

  • Объявление

    C++

    typedef bool ( * Filter )( OSObject *, IOFilterInterruptEventSource *);

    Параметры

    owner

    Указатель на экземпляр владения/клиента.

    sender

    Где прерывание, прибывающее из.

    Возвращаемое значение

    ложь, если может быть проигнорировано это прерывание.

    Обсуждение

    C Указатель функции к подпрограмме для вызова, когда происходит прерывание.

    Оператор импорта

    Objective C

    #include <IOFilterInterruptEventSource.h>;

    Доступность

    Доступный в OS X v10.0 через OS X v10.5.

Константы

  • Объявление

    CPlusPlus

    #define IOFilterInterruptAction IOFilterInterruptEventSource::Filter

    Константы

    • IOFilterInterruptAction

      IOFilterInterruptAction

      Обратная совместимость определяет для ограниченного по объему определения типа старого некласса. Посмотрите $link IOFilterInterruptSource:: Фильтр

      Доступный в OS X v10.0 и позже.

  • Типы данных

    • Объявление

      C++

      struct ExpansionData { };

      Обсуждение

      Эта структура будет использоваться для расширения capablilties IOWorkLoop в будущем.

    Переменные экземпляра

    • Зарезервированный для будущего использования. (Только внутреннее использование)

      Объявление

      C++

      ExpansionData *reserved;

    • Выноска фильтра

      Объявление

      C++

      Filter filterAction;