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

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

Разработчик

Ссылка класса IODMACommand

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

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

IODMACommand

Механизм для преобразования ссылок памяти на адреса шины I/O.

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

Команда разработана для подкласса. Большинство писателей драйвера должно связать некоторые операции DMA со своим дескриптором памяти и обычно использовать структуру C с этой целью. Эта структура часто сохраняется в связанном списке. Этот IODMACommand создал его <kern/queue.h> связь и может быть получен и 'общественность': переменные добавили, дав разработчику структуру, которая может связать дескриптор памяти с определенной dma командой, но также позволит разработчику генерировать ту команду и сохранять состояние необходимым для отслеживания его.

Предусматривается, что пул IODMACommands будет создаваться в инициализации драйвера, и каждая команда будет сохранена в IOCommandPool в то время как не в использовании. Однако, если разработчики хотят вести свои собственные бесплатные списки, который, конечно, возможен. Посмотрите <kern/queue.h> и <xnu/iokit/Kernel/IOCommandPool> для примера кода при управлении записями двунаправленного связанного списка команды.

IODMACommand может использоваться 'слабо соединенным' способом. Чтобы сделать это, необходимо избегать использования любых статических функций членства. Используйте, намного медленнее, но безопасный, weakWithSpecification функция. На успехе будет возвращен dma экземпляр команды. Этот экземпляр может тогда использоваться для клонирования стольких команд, сколько необходим. Не забудьте происходить из этого класса, не может быть сделан слабо, который не является никаким слабым разделением на подклассы!

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


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

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


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

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


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

Objective C

@import Kernel;

Доступность


Доступный в OS X v10.4 и позже.
  • Очищает текущий дескриптор памяти DMACOMMAND

    Объявление

    C++

    virtual IOReturn clearMemoryDescriptor( bool autoComplete = true);

    Параметры

    autoComplete

    Обрабатывается дополнительная логическая переменная, которая вызовет полное () функция автоматически перед дескриптором памяти. Значения по умолчанию к истине.

    Обсуждение

    завершает и лишает законной силы кэш, если команда DMA в настоящее время активна, копирует все данные с буферов возврата, если необходимый и высвобождает все средства, полученные во время setMemoryDescriptor.

  • Создает новую команду на основе спецификации текущей.

    Объявление

    C++

    virtual IODMACommand *cloneCommand( void *refCon = 0);

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

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

    Обсуждение

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

  • Полная обработка отображений DMA после передачи I/O закончена.

    Объявление

    C++

    virtual IOReturn complete( bool invalidateCache = true, bool synchronize = true);

    Параметры

    invalidCache

    Лишите законной силы кэши для дескриптора памяти. Значения по умолчанию к истине для kNonCoherent и проигнорированы другими типами.

    synchronize

    Скопируйте любые буферизированные данные назад в целевой IOMemoryDescriptor. Значения по умолчанию к истине, если синхронизируются () используются для явного копирования данных, передающая ложь может избежать ненужной копии.

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

    kIOReturnNotReady, если не подготовленный, kIOReturnSuccess иначе.

    Обсуждение

    Этот метод нельзя вызвать, если не было ранее выпущено подготавливать; подготавливать () и завершенный () должно произойти в парах, прежде и после передачи I/O

  • Функция помощника для типа проверила вызов к genIOVMSegments (qv) для использования с IODMACommand, установленным с функцией вывода kIODMACommandOutputHost32, kIODMACommandOutputBig32 или kIODMACommandOutputLittle32. Если функция вывода IODMACommand не будет функцией на 32 бита, то результаты будут неправильными.

    Объявление

    C++

    inline IOReturn gen32IOVMSegments( UInt64 *offset, Segment32 *segments, UInt32 *numSegments) ;

  • Функция помощника для типа проверила вызов к genIOVMSegments (qv) для использования с IODMACommand, установленным с функцией вывода kIODMACommandOutputHost64, kIODMACommandOutputBig64 или kIODMACommandOutputLittle64. Если функция вывода IODMACommand не будет функцией на 64 бита, то результаты будут неправильными.

    Объявление

    C++

    inline IOReturn gen64IOVMSegments( UInt64 *offset, Segment64 *segments, UInt32 *numSegments) ;

  • Генерирует медосмотр, рассеиваются/собирают для текущей команды DMA

    Объявление

    C++

    virtual IOReturn genIOVMSegments( UInt64 *offset, void *segments, UInt32 *numSegments);

    Параметры

    offset

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

    segments

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

    numSegments

    Число параметра ввода/вывода сегментов, которые могут поместиться в массив сегмента и число возвратов сгенерированных сегментов.

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

    kIOReturnSuccess на успехе, kIOReturnOverrun, если дескриптор памяти исчерпывается, kIOReturnMessageTooLarge, если выходные адресные биты функции сегмента имеет недостаточное разрешение для сегмента, kIOReturnNotReady, если команда DMA не имеет быть подготовленной, kIOReturnBadArgument, если команда DMA еще не имеет дескриптора памяти или некоторые параметры, является NULL и kIOReturnNotReady, если не подготовлена команда DMA.

    Обсуждение

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

  • Получите текущий дескриптор памяти

    Объявление

    C++

    virtual const IOMemoryDescriptor *getMemoryDescriptor() const;

  • Возвращает смещение и длину в целевой IOMemoryDescriptor подготовленного IODDMACommand.

    Объявление

    C++

    virtual IOReturn getPreparedOffsetAndLength( UInt64 *offset, UInt64 *length);

    Параметры

    offset

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

    length

    возвращает длину в дескрипторе памяти, с которым была подготовлена команда DMA. Передайте NULL для, не заботятся.

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

    Код IOReturn. kIOReturnNotReady, если не подготовлен IODMACommand.

    Обсуждение

    Если успешно подготовлено, возвращает смещение и длину в IOMemoryDescriptor. Перестанет работать для неприготовленного IODMACommand.

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

    Объявление

    C++

    virtual bool initWithSpecification( SegmentFunction outSegFunc, UInt8 numAddressBits, UInt64 maxSegmentSize, MappingOptions mappingOptions = kMapped, UInt64 maxTransferSize = 0, UInt32 alignment = 1, IOMapper *mapper = 0, void *refCon = 0);

    Параметры

    outSegFunc

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

    numAddressBits

    Число битов, которые аппаратные средства используют на его внутренней адресной шине. Обычно 32, но может быть больше на современных аппаратных средствах. 0 подразумевает без ограничений кроме подразумеваемого выходной функцией сегмента.

    maxSegmentSize

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

    mappingOptions

    тип отображения, требующегося, чтобы переводить IOMemoryDescriptor в желаемое число битов. Например, если Ваши аппаратные средства только будут поддерживать 32 бита, но должны будут работать на машинах с> 4G RAM, то некоторое отображение будет требоваться. Число битов будет указано в numAddressBits, видеть ниже. Этот параметр может взять 3:-kNonCoherent значений - используемый для некогерентных аппаратных передач, Отображенный - Проверяют сгенерированные адреса шины того всего I/O, в числе обращения битов, указанных, Обойденных указывает, что обойденное обращение требуется, это используется, когда аппаратные трансдрузья в когерентную память, но не требуется никакое отображение. См. также подготавливаются () к случаям возникновения отказов.

    maxTransferSize

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

    alignment

    Ограничение выравнивания, в байтах, на адресах шины I/O. Значения по умолчанию к единственному выравниванию байта.

    mapper

    Для отображения типов ударил и kBypassed картопостроитель, используется для определения аппаратных средств, которые выполнят отображение, значения по умолчанию к системному картопостроителю.

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

    Может перестать работать, если отображающийся тип не распознан, если один из 3 обязательных параметров устанавливается на 0, если функция вывода на 32 бита выбрана, когда больше чем 32 бита адреса требуются или, если kBypassed требуют на машине, не поддерживающей обход. Возвращает true иначе.

  • Выходная функция сегмента вывода Segment32 обратного порядка байтов.

    Объявление

    C++

    static bool OutputBig32( IODMACommand *target, Segment64 seg, void *segs, UInt32 ind);

  • Выходная функция сегмента вывода Segment64 обратного порядка байтов.

    Объявление

    C++

    static bool OutputBig64( IODMACommand *target, Segment64 seg, void *segs, UInt32 ind);

  • Выходной узел естественная функция сегмента вывода Segment32.

    Объявление

    C++

    static bool OutputHost32( IODMACommand *target, Segment64 seg, void *segs, UInt32 ind);

  • Выходной узел естественная функция сегмента вывода Segment64.

    Объявление

    C++

    static bool OutputHost64( IODMACommand *target, Segment64 seg, void *segs, UInt32 ind);

  • Выходная функция сегмента вывода Segment32 прямого порядка байтов.

    Объявление

    C++

    static bool OutputLittle32( IODMACommand *target, Segment64 seg, void *segs, UInt32 ind);

  • Выходная функция сегмента вывода Segment64 прямого порядка байтов.

    Объявление

    C++

    static bool OutputLittle64( IODMACommand *target, Segment64 seg, void *segs, UInt32 ind);

  • Подготовьте память к передаче I/O.

    Объявление

    C++

    virtual IOReturn prepare( UInt64 offset = 0, UInt64 length = 0, bool flushCache = true, bool synchronize = true);

    Параметры

    offset

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

    length

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

    flushCache

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

    synchronize

    Скопируйте любые буферизированные данные назад с целевого IOMemoryDescriptor. Значения по умолчанию к истине, если синхронизируются () используются для явного копирования данных, передающая ложь может избежать ненужной копии.

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

    Код IOReturn.

    Обсуждение

    Выделите отображающиеся ресурсы, необходимые для этой передачи, указав sub диапазон IOMemoryDescriptor, который будет целью I/O. Полное () метод освобождает эти ресурсы. Данные могут быть скопированы в буферы для kIODirectionOut дескрипторов памяти, в зависимости от аппаратных средств, отображающих доступность ресурса или ограничения выравнивания. Нужно отметить, что эта функция может блокировать и должна только быть вызвана на клиентском контексте, т.е. никогда не вызывать эту подпрограмму, в то время как пропущено; также сам вызов не ориентирован на многопотоковое исполнение, хотя это должно быть проблемой, поскольку каждый IODMACommand независим.

  • Подготовьте память к передаче I/O с новой спецификацией.

    Объявление

    C++

    virtual IOReturn prepareWithSpecification( SegmentFunction outSegFunc, UInt8 numAddressBits, UInt64 maxSegmentSize, MappingOptions mappingOptions = kMapped, UInt64 maxTransferSize = 0, UInt32 alignment = 1, IOMapper *mapper = 0, UInt64 offset = 0, UInt64 length = 0, bool flushCache = true, bool synchronize = true);

    Параметры

    outSegFunc

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

    numAddressBits

    Число битов, которые аппаратные средства используют на его внутренней адресной шине. Обычно 32, но может быть больше на современных аппаратных средствах. 0 подразумевает без ограничений кроме подразумеваемого выходной функцией сегмента.

    maxSegmentSize

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

    mappingOptions

    тип отображения, требующегося, чтобы переводить IOMemoryDescriptor в желаемое число битов. Например, если Ваши аппаратные средства только будут поддерживать 32 бита, но должны будут работать на машинах с> 4G RAM, то некоторое отображение будет требоваться. Число битов будет указано в numAddressBits, видеть ниже. Этот параметр может взять 3:-kNonCoherent значений - используемый для некогерентных аппаратных передач, Отображенный - Проверяют сгенерированные адреса шины того всего I/O, в числе обращения битов, указанных, Обойденных указывает, что обойденное обращение требуется, это используется, когда аппаратные трансдрузья в когерентную память, но не требуется никакое отображение. См. также подготавливаются () к случаям возникновения отказов.

    maxTransferSize

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

    alignment

    Ограничение выравнивания, в байтах, на адресах шины I/O. Значения по умолчанию к единственному выравниванию байта.

    mapper

    Для отображения типов ударил и kBypassed картопостроитель, используется для определения аппаратных средств, которые выполнят отображение, значения по умолчанию к системному картопостроителю.

    offset

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

    length

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

    flushCache

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

    synchronize

    Скопируйте любые буферизированные данные назад с целевого IOMemoryDescriptor. Значения по умолчанию к истине, если синхронизируются () используются для явного копирования данных, передающая ложь может избежать ненужной копии.

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

    Код IOReturn. Может перестать работать, если отображающийся тип не распознан, если один из 3 обязательных параметров устанавливается на 0, если функция вывода на 32 бита выбрана, когда больше чем 32 бита адреса требуются или, если kBypassed требуют на машине, не поддерживающей обход.

    Обсуждение

    Выделите отображающиеся ресурсы, необходимые для этой передачи, указав sub диапазон IOMemoryDescriptor, который будет целью I/O. Полное () метод освобождает эти ресурсы. Данные могут быть скопированы в буферы для kIODirectionOut дескрипторов памяти, в зависимости от аппаратных средств, отображающих доступность ресурса или ограничения выравнивания. Нужно отметить, что эта функция может блокировать и должна только быть вызвана на клиентском контексте, т.е. никогда не вызывать эту подпрограмму, в то время как пропущено; также сам вызов не ориентирован на многопотоковое исполнение, хотя это должно быть проблемой, поскольку каждый IODMACommand независим.

  • Данные копии с буфера IODMACOMMAND на указанный буфер.

    Объявление

    C++

    UInt64 readBytes( UInt64offset, void *bytes, UInt64length);

    Параметры

    offset

    Байтовое смещение в память IODMACOMMAND, относительно подготовленного смещения.

    bytes

    Вызывающая сторона предоставила буфер для копирования данных в.

    length

    Длина данных для копирования.

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

    Число байтов скопировало, нуль будет возвращен, если указанное смещение будет вне подготовленной длины IODMACommand.

    Обсуждение

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

  • Наборы и сброс текущий дескриптор памяти DMACOMMAND

    Объявление

    C++

    virtual IOReturn setMemoryDescriptor( const IOMemoryDescriptor *mem, bool autoPrepare = true);

    Параметры

    mem

    Указатель на текущий дескриптор памяти I/Os.

    autoPrepare

    Обрабатывается дополнительная логическая переменная, которая вызовет подготавливать () функция автоматически после дескриптора памяти. Значения по умолчанию к истине.

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

    Возвраты kIOReturnSuccess, kIOReturnBusy, если в настоящее время подготовлено, kIOReturnNoSpace, если длина (мадам)> = Максимальный Размер Передачи или коды ошибки, возвращенные, подготавливаются () (qv).

    Обсуждение

    Команда DMA сконфигурирует себя на основе информации, которую она находит в дескрипторе памяти. Это ищет вещи как направление дескриптора памяти и отображается ли текущий дескриптор памяти уже в некоторый IOMMU. Как удобство программиста это может также сразу подготовить команду DMA. Посмотрите подготавливаются (). Обратите внимание на то, что IODMACommand разработан к используемому многократно с преемственностью дескрипторов памяти, делая объединение команд возможным. Это - ошибка, хотя попытаться сбросить в настоящее время подготовленный () команда DMA. Предупреждение: В то время как в запертом контексте, т.е. одном из действия WorkLoops вызывают outs, эта подпрограмма может блокировать поэтому никогда попытку автоподготовить IODMACommand.

  • Принесите IOMemoryDescriptor и буферы IODMACommand в синхронизацию.

    Объявление

    C++

    virtual IOReturn synchronize( IOOptionBitsoptions);

    Параметры

    options

    Указывает направление копии: kIODirectionOut копируют память IOMemoryDesciptor в любые буферы IODMACommand. По умолчанию это действие имеет место автоматически в, подготавливаются (). kIODirectionIn копируют любые буферы IODMACommand назад в IOMemoryDescriptor. По умолчанию это действие имеет место автоматически в полном (). kForceDoubleBuffer копируют весь подготовленный диапазон в новую страницу выровненный буфер.

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

    kIOReturnNotReady, если не подготовленный, kIOReturnBadArgument, если недопустимые опции передаются, kIOReturnSuccess иначе.

    Обсуждение

    Этот метод нельзя вызвать, если не было ранее выпущено подготавливать. В случае необходимости вызывающая сторона может синхронизировать любые буферы IODMACommand с исходными буферами IOMemoryDescriptor.

  • Создает и инициализирует IODMACommand в одной работе, если эта версия операционной системы поддерживает ее.

    Объявление

    C++

    static inline IOReturn weakWithSpecification ( IODMACommand **newCommand, SegmentFunction outSegFunc, UInt8 numAddressBits, UInt64 maxSegmentSize, MappingOptions mapType = kMapped, UInt64 maxTransferSize = 0, UInt32 alignment = 1, IOMapper *mapper = 0, void *refCon = 0) __attribute__((always_inline));

    Параметры

    newCommand

    Выходная ссылочная переменная недавно создаваемого IODMACommand.

    outSegFunc

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

    numAddressBits

    Число битов, которые аппаратные средства используют на его внутренней адресной шине. Обычно 32, но может быть больше на современных аппаратных средствах. 0 подразумевает без ограничений кроме подразумеваемого выходной функцией сегмента.

    maxSegmentSize

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

    mapType

    тип отображения, требующегося, чтобы переводить IOMemoryDescriptor в желаемое число битов. Например, если Ваши аппаратные средства только будут поддерживать 32 бита, но должны будут работать на машинах с> 4G RAM, то некоторое отображение будет требоваться. Число битов будет указано в numAddressBits, видеть ниже. Этот параметр может взять 3:-kNonCoherent значений - используемый для некогерентных аппаратных передач, Отображенный - Проверяют сгенерированные адреса шины того всего I/O, в числе обращения битов, указанных, Обойденных указывает, что обойденное обращение требуется, это используется, когда аппаратные передачи в когерентную память, но не требуется никакое отображение. См. также подготавливаются () к случаям возникновения отказов.

    maxTransferSize

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

    alignment

    Ограничение выравнивания, в байтах, на адресах шины I/O. Значения по умолчанию к единственному выравниванию байта.

    mapper

    Для отображения типов ударил и kBypassed картопостроитель, используется для определения аппаратных средств, которые выполнят отображение, значения по умолчанию к системному картопостроителю.

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

    kIOReturnSuccess, если все в порядке, иначе kIOReturnBadArgument, если newCommand является NULL, kIOReturnUnsupported, если ядро не экспортирует IODMACommand или IOReturnError, если новая команда перестала работать к init, q.v. initWithSpecification.

    Обсуждение

    Функция фабрики, чтобы создать и инициализировать IODMACommand в одной работе. Функция позволяет разработчику 'слабой' ссылке с IODMACommand. Если IODMACommand будет недоступен, эта функция возвратит kIOReturnUnsupported. Эта функция является фактически довольно медленной, таким образом, будет лучше вызвать его, как только тогда клонируются, успешно создают команду с помощью cloneCommand (q.v)..

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

    Объявление

    C++

    static IODMACommand * withSpecification( SegmentFunction outSegFunc, UInt8 numAddressBits, UInt64 maxSegmentSize, MappingOptions mappingOptions = kMapped, UInt64 maxTransferSize = 0, UInt32 alignment = 1, IOMapper *mapper = 0, void *refCon = 0);

    Параметры

    outSegFunc

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

    numAddressBits

    Число битов, которые аппаратные средства используют на его внутренней адресной шине. Обычно 32, но может быть больше на современных аппаратных средствах. 0 подразумевает без ограничений кроме подразумеваемого выходной функцией сегмента.

    maxSegmentSize

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

    mappingOptions

    тип отображения, требующегося, чтобы переводить IOMemoryDescriptor в желаемое число битов. Например, если Ваши аппаратные средства только будут поддерживать 32 бита, но должны будут работать на машинах с> 4G RAM, то некоторое отображение будет требоваться. Число битов будет указано в numAddressBits, видеть ниже. Этот параметр может взять 3:-kNonCoherent значений - используемый для некогерентных аппаратных передач, Отображенный - Проверяют сгенерированные адреса шины того всего I/O, в числе обращения битов, указанных, Обойденных указывает, что обойденное обращение требуется, это используется, когда аппаратные трансдрузья в когерентную память, но не требуется никакое отображение. См. также подготавливаются () к случаям возникновения отказов.

    maxTransferSize

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

    alignment

    Ограничение выравнивания, в байтах, на адресах шины I/O. Значения по умолчанию к единственному выравниванию байта.

    mapper

    Для отображения типов ударил и kBypassed картопостроитель, используется для определения аппаратных средств, которые выполнят отображение, значения по умолчанию к системному картопостроителю.

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

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

    Обсуждение

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

  • Данные копии к буферу IODMACOMMAND от указанного буфера.

    Объявление

    C++

    UInt64 writeBytes( UInt64offset, const void *bytes, UInt64length);

    Параметры

    offset

    Байтовое смещение в память IODMACOMMAND, относительно подготовленного смещения.

    bytes

    Вызывающая сторона предоставила буфер для копирования данных с.

    length

    Длина данных для копирования.

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

    Число байтов скопировало, нуль будет возвращен, если указанное смещение будет вне подготовленной длины IODMACommand.

    Обсуждение

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

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

  • Объявление

    C++

    typedef bool ( *SegmentFunction)( IODMACommand *target, Segment64 segment, void *segments, UInt32 segmentIndex);

    Параметры

    segment

    Адрес шины I/O на 64 бита и длина.

    segments

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

    segmentIndex

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

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

    Если кодирование сегмента успешно выполнилось, возвращает true. false может быть возвращен, если текущий сегмент не помещается в выходной сегмент, т.е. привычка адреса на 38 битов вписалась в 32 кодирования.

    Обсуждение

    Указатель на функцию C, переводящую 64 сегмента и выводящую единственный желаемый сегмент к массиву в требуемом индексе. Существует группа предварительно реализованных SegmentFunctions, которые могут быть полезны для разработчика ниже.

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

    Objective C

    #include <IODMACommand.h>;

    Доступность

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

Константы

  • fMemory

    fMemory

    дескриптор памяти для текущего I/O.

  • Объявление

    CPlusPlus

    #define kIODMACommandOutputBig32 (IODMACommand::OutputBig32) #define kIODMACommandOutputBig64 (IODMACommand::OutputBig64) #define kIODMACommandOutputLittle64 (IODMACommand::OutputLittle64) #define kIODMACommandOutputHost32 (IODMACommand::OutputHost32) #define kIODMACommandOutputHost64 (IODMACommand::OutputHost64) #define kIODMACommandOutputLittle32 (IODMACommand::OutputLittle32) #define kIODMACommandOutputBig64 (IODMACommand::OutputBig64) #define kIODMACommandOutputLittle64 (IODMACommand::OutputLittle64)

    Константы

    • kIODMACommandOutputBig32

      kIODMACommandOutputBig32

      Выходная функция сегмента вывода Segment32 обратного порядка байтов.

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

    • kIODMACommandOutputBig64

      kIODMACommandOutputBig64

      Выходная функция сегмента вывода Segment64 прямого порядка байтов.

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

    • kIODMACommandOutputBig64

      kIODMACommandOutputBig64

      Выходная функция сегмента вывода Segment64 обратного порядка байтов.

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

    • kIODMACommandOutputHost32

      kIODMACommandOutputHost32

      Выходной узел естественная функция сегмента вывода Segment32.

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

    • kIODMACommandOutputHost64

      kIODMACommandOutputHost64

      Выходной узел естественная функция сегмента вывода Segment64.

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

    • kIODMACommandOutputLittle32

      kIODMACommandOutputLittle32

      Выходная функция сегмента вывода Segment32 прямого порядка байтов.

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

    • kIODMACommandOutputLittle64

      kIODMACommandOutputLittle64

      Выходная функция сегмента вывода Segment64 прямого порядка байтов.

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

    • kIODMACommandOutputLittle64

      kIODMACommandOutputLittle64

      Выходная функция сегмента вывода Segment64 обратного порядка байтов.

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

  • Отображение типов для указания желаемого картопостроителя вводит для перевода дескрипторов памяти в I/O Адреса шины DMA.

    Объявление

    CPlusPlus

    enum MappingOptions { kMapped = 0x00000000, kBypassed = 0x00000001, kNonCoherent = 0x00000002, kTypeMask = 0x0000000f, kNoCacheStore = 0x00000010 , // Memory in descriptor kOnChip = 0x00000020 , // Indicates DMA is on South Bridge kIterateOnly = 0x00000040 // DMACommand will be used as a cursor only };

    Константы

    • kNonCoherent

      kNonCoherent

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

    • kMapped

      kMapped

      Позвольте драйверу определять размер обращения

    • kBypassed

      kBypassed

      Позвольте драйверам обходить любой картопостроитель

    • kMaxMappingOptions

      kMaxMappingOptions

      Внутреннее использование только

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

    Objective C

    #include <IODMACommand.h>;

    Доступность

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

  • Опции для синхронизировать метода.

    Объявление

    CPlusPlus

    enum SynchronizeOptions { kForceDoubleBuffer = 0x01000000 };

    Константы

    • kForceDoubleBuffer

      kForceDoubleBuffer

      Скопируйте весь подготовленный диапазон в новую страницу выровненный буфер.

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

    Objective C

    #include <IODMACommand.h>;

    Доступность

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

  • Типы данных

    • Объявление

      C++

      struct Segment32 { UInt32 fIOVMAddr, fLength; };

      Обсуждение

      Адрес шины I/O на 32 бита / пара длины

    • Объявление

      C++

      struct Segment64 { UInt64 fIOVMAddr, fLength; };

      Обсуждение

      Адрес шины I/O на 64 бита / пара длины

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

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

      Объявление

      C++

      struct IODMACommandInternal * reserved;

    • Ссылка Констант, клиент определил публично avialable

      Объявление

      C++

      void *fRefCon;

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

      Объявление

      C++

      SegmentFunction fOutSeg;

    • Число непрерывных сегментов, требуемых для текущего дескриптора памяти и желаемого отображения

      Объявление

      C++

      UInt32 fNumSegments;

    • Число битов, которые могут адресовать аппаратные средства

      Объявление

      C++

      UInt32 fNumAddressBits;

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

      Объявление

      C++

      UInt64 fMaxTransferSize;

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

      Объявление

      C++

      UInt64 fMaxSegmentSize;

    • Какое отображение виртуального адреса I/O требуется для этой команды

      Объявление

      C++

      MappingOptions fMappingOptions;

    • Клиент определил картопостроитель.

      Объявление

      C++

      IOMapper *fMapper;

    • Маска, чтобы быть ored в адрес для обхода отображения данного iommu.

      Объявление

      C++

      UInt64 fBypassMask;

    • Маска ограничения выравнивания.

      Объявление

      C++

      UInt32 fAlignMask;

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

      Объявление

      C++

      UInt32 fActive;