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

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

Разработчик

Ссылка класса IOMemoryCursor

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

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

IOMemoryCursor

Механизм для преобразования ссылок памяти на физические адреса.

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

Драйвер, как ожидают, создаст курсор памяти и сконфигурирует его к ограничениям его аппаратных средств DMA; например, курсор памяти, используемый протоколом FireWire SBP-2, имеет максимальный физический размер сегмента 2^16 - 1, но фактический размер передачи неограничен. Таким образом это создало бы курсор с maxSegmentSize 65 535 и maxTransfer размером UINT_MAX. Это также предоставило бы SegmentFunction, который может вывести pagelist запись.

Ниже самый простой пример SegmentFunction:

недействительный IONaturalMemoryCursor:: outputSegment (сегмент PhysicalSegment,

недействительный * outSegments,

UInt32 outSegmentIndex)

{

((PhysicalSegment *) outSegments) [outSegmentIndex] = сегмент;

}

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


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

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


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

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


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

Objective C

@import Kernel;

Доступность


Доступный в OS X v10.0 и позже.
  • Генерирует медосмотр, рассеиваются/собирают список, данный дескриптор памяти.

    Объявление

    C++

    virtual UInt32 genPhysicalSegments( IOMemoryDescriptor *descriptor, IOByteCount fromPosition, void *segments, UInt32 maxSegments, UInt32 maxTransferSize = 0, IOByteCount *transferSize = 0);

    Параметры

    descriptor

    IOMemoryDescriptor, описывающий данные, связанные с запросом I/O.

    fromPosition

    Стартовое расположение I/O в дескрипторе памяти.

    segments

    Недействительный указатель на основу физического вывода рассеивается/собирает список. Всегда передаваемый непосредственно на SegmentFunction без интерпретации курсором.

    maxSegments

    Максимальное количество сегментов, которые могут быть записаны в массив сегментов.

    maxTransferSize

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

    transferSize

    Указатель на переменную IOByteCount, которая может содержать общий размер описываемой передачи. Значения по умолчанию к 0 указаниям, что никакой размер передачи не должен быть возвращенным.

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

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

    Обсуждение

    Генерирует список физических сегментов от данного дескриптора памяти, относительно текущей позиции дескриптора.

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

    Объявление

    C++

    virtual bool initWithSpecification( SegmentFunction outSegFunc, IOPhysicalLength maxSegmentSize = 0, IOPhysicalLength maxTransferSize = 0, IOPhysicalLength alignment = 1);

    Параметры

    outSegFunc

    SegmentFunction для вызова для вывода одного физического сегмента.

    maxSegmentSize

    Максимальный допустимый размер для одного сегмента. Значения по умолчанию к 0.

    maxTransferSize

    Максимальный размер всей передачи. Значения по умолчанию к 0 указаниям никакого максимума.

    alignment

    Ограничения выравнивания на выходные физические адреса. Не в настоящее время реализовываемый. Значения по умолчанию к единственному выравниванию байта.

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

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

  • Создает и инициализирует IOMemoryCursor в одной работе.

    Объявление

    C++

    static IOMemoryCursor * withSpecification( SegmentFunction outSegFunc, IOPhysicalLength maxSegmentSize = 0, IOPhysicalLength maxTransferSize = 0, IOPhysicalLength alignment = 1);

    Параметры

    outSegFunc

    SegmentFunction для вызова для вывода одного физического сегмента.

    maxSegmentSize

    Максимальный допустимый размер для одного сегмента. Значения по умолчанию к 0.

    maxTransferSize

    Максимальный размер всей передачи. Значения по умолчанию к 0 указаниям никакого максимума.

    alignment

    Ограничения выравнивания на выходные физические адреса. Не в настоящее время реализовываемый. Значения по умолчанию к единственному выравниванию байта.

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

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

    Обсуждение

    Функция фабрики, чтобы создать и инициализировать IOMemoryCursor в одной работе. Для получения дополнительной информации посмотрите IOMemoryCursor:: initWithSpecification.

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

  • Объявление

    C++

    typedef void ( *SegmentFunction)( PhysicalSegment segment, void *segments, UInt32 segmentIndex);

    Параметры

    segment

    Физический адрес и длина, которая является рядом с быть выведенной.

    segments

    Основа выходного вектора DMA адресует пар длины.

    segmentIndex

    Индекс для вывода 'сегмента' в массиве 'сегментов'.

    Обсуждение

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

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

    Objective C

    #include <IODMACommand.h>;

    Доступность

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

Константы

  • Объявление

    CPlusPlus

    #define IOPhysicalSegment IOMemoryCursor::PhysicalSegment #define OutputSegmentFunc IOMemoryCursor::SegmentFunction

    Константы

    • IOPhysicalSegment

      IOPhysicalSegment

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

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

    • OutputSegmentFunc

      OutputSegmentFunc

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

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

  • Типы данных

    • Объявление

      C++

      struct PhysicalSegment { IOPhysicalAddress location; IOPhysicalLength length; };

      Обсуждение

      Физический адрес / пара длины.

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

    • Когда событие было поставлено, метод действия вызвал

      Объявление

      C++

      SegmentFunction outSeg;

    • Максимальный размер передачи, которую этому курсору памяти позволяют генерировать

      Объявление

      C++

      IOPhysicalLength maxTransferSize;

    • Максимальный размер одного сегмента в рассеиваться/собирать списке

      Объявление

      C++

      IOPhysicalLength maxSegmentSize;

    • В настоящее время неиспользованный. Зарезервированный для автоматизированного aligment кода ограничения.

      Объявление

      C++

      IOPhysicalLength alignMask;