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

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

Разработчик

Ссылка класса IOInterruptEventSource

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

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

IOInterruptEventSource

Источник события для поставки прерывания циклу работы базировал драйверы.

IOInterruptEventSource является родовым объектом, поставляющим, призывает процедуры прерывания, это - клиент гарантируемым однопоточным способом. IOInterruptEventSource является частью $link IOKit инфраструктура IOWorkLoop, где семантическое, которое один и только один метод действия выполняет в цепи событий циклов работы.

То, когда метод действия вызовут в клиентской функции членства, получит 2 параметра, (IOEventSource *) отправитель и (международное) количество, Видеть $link IOInterruptEventSource:: Действие. Где отправитель будет ссылкой на прерывание, произошедшее, и количество будет вычислено различием между $link producerCount и $link consumerCount. Это число может не быть надежным, поскольку никакая попытка не предпринята для корректировки для во всем мире проблем типа, но предоставлена для получения общей информации и статистического сбора.

В целом клиент будет использовать функцию членства фабрики, чтобы создать и инициализировать источник события и затем добавить его к их циклу работы. Это - ответственность цикла работы поддержать новый источник события в, он - цепь событий. Посмотрите $link IOWorkLoop.

Источник события прерывания присоединяется к источнику прерывания данного провайдера во время инициализации. В это время это определяет, подключено ли это к уровню или инициируемому фронтом сигнала прерыванию. Если прерывание является инициированным уровнем, прерывают источник события, автоматически отключает источник прерывания в основное время прерывания и после него вызов клиент, который это автоматически повторно включает прерыванию. Это действие является довольно дорогим, но это - 100%-й сейф и значения по умолчанию заметно так, чтобы писатель драйвера не реализовывал подчиненные процедуры прерывания типа. Таким образом для повторения писатель драйвера не должен быть заинтересован фактическим базовым механизмом прерывания, поскольку источник события скрывает сложность.

Высказывание этого, если аппаратные средства являются картой мультиустройства, например 4 порта NIC, где все устройства совместно используют один уровень, инициировало, прерывают AND, возможно решить, что прерывание каждого порта утверждает непагубно тогда $link, IOFilterInterruptEventSource был бы лучшим выбором.

Предупреждение: Все IOInterruptEventSources создаются в нерабочем состоянии. Если Вы хотите фактически запланировать поставку прерывания, не забывают включать источник.

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


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

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


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

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


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

Objective C

@import Kernel;

Доступность


Доступный в OS X v10.0 и позже.
  • Чисто виртуальная функция-член, используемая IOWorkLoop для issueing клиент, вызывает.

    Объявление

    C++

    virtual bool checkForWork();

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

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

    Обсуждение

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

  • Отключите источник события.

    Объявление

    C++

    virtual void disable();

    Обсуждение

    Когда checkForWork вызовут, реализация подкласса, как ожидают, будет уважать включенное состояние.

  • Функции, вызванные контроллером прерываний. Посмотрите $link IOService:: registerInterrupt

    Объявление

    C++

    virtual void disableInterruptOccurred( void *, IOService *nub, intind);

    Параметры

    nub

    Где сделал прерывание, происходят из

    ind

    Что, это прерывает индекс в 'куске'.

  • Включите источник события.

    Объявление

    C++

    virtual void enable();

    Обсуждение

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

  • Реализация подкласса свободного метода, разъединений из источника прерывания.

    Объявление

    C++

    virtual void free();

  • Get'ter за $link автоотключают переменную.

    Объявление

    C++

    virtual bool getAutoDisable() const;

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

    значение автоотключает.

  • Get'ter за $link intIndex прерывание индексируют переменную.

    Объявление

    C++

    virtual int getIntIndex() const;

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

    значение intIndex.

  • Get'ter для переменной провайдера $link.

    Объявление

    C++

    virtual const IOService *getProvider() const;

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

    значение провайдера.

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

    Объявление

    C++

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

    Параметры

    owner

    Владеющий клиент нового источника события.

    action

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

    provider

    IOService, представляющий источник прерывания. Значения по умолчанию к 0. Когда никакой провайдер не определяется, источник события предполагает, что клиент будет некоторым способом вызывать interruptOccured метод явно. Это начнет дело для безопасной поставки асинхронного события в драйвер.

    intIndex

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

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

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

  • Функция фабрики для создания IOInterruptEventSources и инициализации.

    Объявление

    C++

    static IOInterruptEventSource * interruptEventSource( OSObject *owner, Action action, IOService *provider = 0, int intIndex = 0);

    Параметры

    owner

    Владеющий клиент нового источника события.

    action

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

    provider

    IOService, представляющий источник прерывания. Значения по умолчанию к 0. Когда никакой провайдер не определяется, источник события предполагает, что клиент будет некоторым способом вызывать interruptOccured метод явно. Это начнет дело для безопасной поставки асинхронного события в драйвер.

    intIndex

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

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

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

  • Функции, вызванные контроллером прерываний. Посмотрите $link IOService:: registerInterrupt

    Объявление

    C++

    virtual void interruptOccurred( void *, IOService *nub, intind);

    Параметры

    nub

    Где сделал прерывание, происходят из

    ind

    Что, это прерывает индекс в 'куске'.

  • Функции, вызванные контроллером прерываний. Посмотрите $link IOService:: registerInterrupt

    Объявление

    C++

    virtual void normalInterruptOccurred( void *, IOService *nub, intind);

    Параметры

    nub

    Где сделал прерывание, происходят из

    ind

    Что, это прерывает индекс в 'куске'.

  • Реализация подкласса setWorkLoop метода.

    Объявление

    C++

    virtual void setWorkLoop( IOWorkLoop *inWorkLoop);

  • Попытки сократить задержку для прерывания, которое будет получено около требуемого времени.

    Объявление

    C++

    IOReturn warmCPU( uint64_tabstime);

    Параметры

    abstime

    Время, в которое ожидается прерывание.

    Обсуждение

    Нагревает CPU перед прерыванием так, чтобы прерывание могло быть обслужено с предсказуемой задержкой. Прогрев не является периодическим; вызывающие стороны должны вызвать warmCPU один раз перед каждым прерыванием. Рекомендуется, чтобы запросы были проблемами в последовательном (т.е. каждый после того, как цель для предыдущего вызова протекла), поскольку существует прописная буква в масштабе всей системы на числе выдающихся запросов. Эта подпрограмма может быть подрывной к системе, если используется с очень маленькими интервалами между запросами; это должно использоваться только в случаях, где задержка прерывания абсолютно критически важна, и десятки или сотни миллисекунд между целями ожидаемый масштаб времени.Примечание: не безопасно вызвать этот метод с отключенными прерываниями.

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

  • Объявление

    C++

    typedef void ( * Action )( OSObject *, IOInterruptEventSource *, int count);

    Параметры

    owner

    Указатель на клиентский экземпляр.

    sender

    Указатель на генерацию прерывает источник события.

    count

    Число прерываний, замеченных перед поставкой.

    Обсуждение

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

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

    Objective C

    #include <IOCommandGate.h>;

    Доступность

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

Константы

  • Объявление

    CPlusPlus

    #define IOInterruptEventAction IOInterruptEventSource::Action

    Константы

    • IOInterruptEventAction

      IOInterruptEventAction

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

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

  • Типы данных

    • Объявление

      C++

      struct ExpansionData { };

      Обсуждение

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

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

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

      Объявление

      C++

      ExpansionData *reserved;

    • IOService, обеспечивающий прерывания для поставки.

      Объявление

      C++

      IOService *provider;

    • Текущее количество полученных произведенных прерываний.

      Объявление

      C++

      volatile unsigned int producerCount;

    • Объявление

      C++

      int intIndex;

    • Имеет пользователя expicitly, отключил этот источник события, раз так тогда не делайте сверхъязя их запрос при возврате из выноски

      Объявление

      C++

      bool explicitDisable;

    • Текущее количество произведенных прерываний, о которых сообщили владельцу.

      Объявление

      C++

      unsigned int consumerCount;

    • Сделайте мы должны автоматически отключить источник прерывания, когда мы берем прерывание, т.е. мы находимся на одном уровне инициированные.

      Объявление

      C++

      bool autoDisable;