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

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

Разработчик

Ссылка buf.h

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

На этой странице

Ссылка buf.h

Включенные заголовки

  • <sys/cdefs.h>

  • <sys/kernel_types.h>

  • <sys/ucred.h>

  • <mach/memory_object_types.h>

Функции

  • Выделите неинициализированный буфер.

    Объявление

    Objective C

    buf_t buf_alloc ( vnode_t );

    Параметры

    vp

    vnode для соединения с буфером: дополнительно NULL. Если vp будет файлом устройств, то связанное устройство буфера будет установлено. Если vp является NULL, он может быть установлен позже с buf_setvnode ().

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

    Новый буфер.

    Обсуждение

    Буфер, возвращенный buf_alloc (), отмечен как занятый и как iobuf; это не имеет никакого установленного хранения и должно быть установлено с помощью buf_setdataptr () или buf_setupl ()/buf_map ().

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Получает атрибуты для этого buf.

    Объявление

    Objective C

    bufattr_t buf_attr ( buf_t );

    Параметры

    bp

    Буфер, чьи атрибуты для получения.

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

    bufattr_t.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Запустите запись asychronous на буфере.

    Объявление

    Objective C

    errno_t buf_bawrite ( buf_t );

    Параметры

    bp

    Буфер, на котором можно инициировать I/O.

    throttle

    Если «дроссель» будет ненулевым и больше, чем записи VNODE_ASYNC_THROTTLE происходят на этом файле, то buf_bawrite () блокирует, пока количество записи не опускается ниже VNODE_ASYNC_THROTTLE. Если «дроссель» будет нулем, и количество записи высоко, то это перестанет работать с EWOULDBLOCK; вызывающая сторона может решить, выполнить ли вызов блокирования или стремиться к другим возможностям.

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

    EWOULDBLOCK, если количество записи высоко и «дроссель», является нулем; иначе, ошибки от VNOP_BWRITE.

    Обсуждение

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

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Отметьте буфер для отложенной записи.

    Объявление

    Objective C

    errno_t buf_bdwrite ( buf_t );

    Параметры

    bp

    Буфер для маркировки для отложенной записи.

    return_error

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

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

    EAGAIN для return_error! = 0 случаев, 0 для успеха, ошибок от buf_bawrite.

    Обсуждение

    Отмечает буфер как ожидающий отложенной записи и текущего I/O как завершенный; данные будут записаны в запоминающее устройство, прежде чем буфер будет снова использован, но это не будет сразу поставлено в очередь для I/O. Обратите внимание на то, что для буферов, выделенных с buf_alloc (), нет таких гарантий; необходимо заботиться о собственном сбрасывании к диску. Если число отложенных записей, ожидающих в системе, больше, чем внутренний предел и вызывающая сторона не запросили иначе [видят, что return_error], buf_bdwrite () в одностороннем порядке запустит асинхронный I/O с buf_bawrite (), чтобы препятствовать груде отложенных записей становиться слишком большой.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Отметьте I/O, как завершено.

    Объявление

    Objective C

    void buf_biodone ( buf_t );

    Параметры

    bp

    Буфер для маркировки, как сделано с I/O.

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

    недействительный.

    Обсуждение

    buf_biodone () нужно вызвать тем, кто бы ни решает, что I/O на буфере завершен; например, IOStorageFamily. Это очищает грязный флаг на буфере и сигналы на vnode, что запись завершилась с vnode_writedone (). Если выноска или фильтр были установлены на буфере, та функция вызвана. В случае выноски та функция, как ожидают, будет заботиться об очистке и освобождении буфера. Иначе, если буфер отмечен B_ASYNC (например, это было передано buf_bawrite ()), тогда buf_biodone () считает себя выровненным по ширине в вызове buf_brelse () для возврата его бесплатным спискам - никто не ожидает его. Наконец, официанты на BP (например, в buf_biowait ()) разбужены.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Ожидайте I/O на буфере для завершения.

    Объявление

    Objective C

    errno_t buf_biowait ( buf_t );

    Параметры

    bp

    Буфер для ожидания на.

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

    0 для успешного ожидания; ненулевой буфер был отмечен как EINTR или установил ошибку на нем.

    Обсуждение

    Ожидает I/O на буфере для окончания, как отмечено buf_biodone () вызов.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Свяжите физический номер блока с буфером, в смысле VNOP_BLOCKMAP.

    Объявление

    Objective C

    daddr64_t buf_blkno ( buf_t );

    Параметры

    bp

    Буфер, чей физический номер блока для получения.

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

    Номер блока.

    Обсуждение

    То, когда физический номер блока буфера является тем же, является его номером логического блока, тогда физический номер блока считают неинициализированным. Физический номер блока-1 указывает, что нет никакого допустимого физического отображения (например, логический блок недопустим или соответствует редкой области в файле). Физический номер блока обычно устанавливается кластерным уровнем или buf_getblk ().

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Синхронно считайте блок файла.

    Объявление

    Objective C

    errno_t buf_bread ( vnode_t, daddr64_t, int, kauth_cred_t, buf_t * );

    Параметры

    vp

    Файл, из которого можно читать.

    blkno

    Логическое (файловая система) номер блока для чтения.

    size

    Размер блока; не используйте для размеров> 4K.

    cred

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

    bpp

    Целевой указатель для буфера.

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

    0 для успеха или ошибки от buf_biowait ().

    Обсуждение

    buf_bread () является традиционным способом считать единственный логический блок файла через буферный кэш. Это пытается найти буферную и соответствующую страницу (ы) в ядре, вызывает VNOP_STRATEGY при необходимости для загрузки данных в память и ожидает I/O для завершения. Это не должно использоваться для чтения блоков больших, чем 4K (одна страница VM) в размере; используйте кластерные подпрограммы для больших чтений. Действительно, кластерный уровень является более эффективным выбором для чтения ДАННЫХ, если Вам не нужна некоторая точно настроенная семантика, которую это не может обеспечить.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Считайте блок из файла со считанным вперед.

    Объявление

    Objective C

    errno_t buf_breadn ( vnode_t, daddr64_t, int, daddr64_t *, int *, int, kauth_cred_t, buf_t * );

    Параметры

    vp

    Файл, из которого можно читать.

    blkno

    Логическое (файловая система) номер блока для чтения синхронно.

    size

    Размер блока; не используйте для размеров> 4K.

    rablks

    Массив номеров логического блока для асинхронного чтения-aheads.

    rasizes

    Массив размеров блока для асинхронного чтения-aheads, каждый индекс, соответствующий тому же индексу в «rablks».

    nrablks

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

    cred

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

    bpp

    Целевой указатель для буфера.

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

    0 для успеха или ошибки от buf_biowait ().

    Обсуждение

    buf_breadn () читает один блок синхронно в стиле buf_bread () и исчерпывает указанный набор асинхронных чтений для улучшения вероятности будущих удачных обращений в кэш. Это не должно использоваться для чтения блоков больших, чем 4K (одна страница VM) в размере; используйте кластерные подпрограммы для больших чтений. Действительно, кластерный уровень является более эффективным выбором для чтения ДАННЫХ, если Вам не нужна некоторая точно настроенная семантика, которую это не может обеспечить.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Выпустите любое требование буфера, передав его обратно в бесплатные списки.

    Объявление

    Objective C

    void buf_brelse ( buf_t );

    Параметры

    bp

    Буфер для выпуска. недействительный @retrn.

    Обсуждение

    buf_brelse () очищает буферное государство и выпускает буфер к бесплатным спискам. Если буфер не будет отмечен недопустимый, и его страницы грязны (например, отложенная запись была сделана), то его данные будут преданы запоминающему устройству. Если это будет отмечено недопустимое, то его данные будут отброшены полностью. В допустимый, кэшируемый буфер включат список и сохранят в буферном хеше, таким образом, это сможет быть найдено снова; иначе, это будет отделено от его vnode и обработано как пустое. То, которые перечисляют допустимый буфер, помещается в, зависит от использования buf_markaged (), является ли это метаданными и флагом B_LOCKED. Буфер B_LOCKED не будет доступен для повторного использования другими файлами, хотя его данные могут быть разбиты на страницы. Обратите внимание на то, что buf_brelse () предназначается для использования с традиционно выделенными буферами.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Запишите данные буфера в запоминающее устройство.

    Объявление

    Objective C

    errno_t buf_bwrite ( buf_t );

    Параметры

    bp

    Буфер для записи в диск.

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

    0 для успеха; ошибки от buf_biowait ().

    Обсуждение

    Как только данные в буфере были изменены, buf_bwrite () начинает отправлять его в диск путем вызова VNOP_STRATEGY. Если B_ASYNC не был установлен на буфере (buf_setflags () или иначе), данные будут записаны в диск, когда возвращается buf_bwrite (). Посмотрите Холостяка (p 56).

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Заставьте функциональный набор быть вызванным, когда завершится I/O на буфере.

    Объявление

    Objective C

    void * buf_callback ( buf_t );

    Параметры

    bp

    Буфер, чей обратный вызов для получения.

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

    0 для успеха или ошибок от файловой системы или уровней устройств.

    Обсуждение

    Функция, возвращенная buf_callback, была первоначально установлена с buf_setcallback ().

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Обнулите хранение, связанное с буфером.

    Объявление

    Objective C

    void buf_clear ( buf_t );

    Параметры

    bp

    Буфер для обнуления.

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

    недействительный.

    Обсуждение

    Вызовы buf_map () для получения адреса данных буфера; для буфера B_CLUSTER (тот, имевший buf_setupl () обратился к нему), это пытается отобразить UPL буфера в память; должен только быть вызван один раз во время жизненного цикла iobuf (один выделенный с buf_alloc ()).

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Ясные флаги на буфере. @discussion: buffer_redundancy_flags и = ~flags

    Объявление

    Objective C

    void buf_clear_redundancy_flags ( buf_t, uint32_t );

    Параметры

    bp

    Буфер, чьи флаги для очистки.

    flags

    Флаги для удаления из маски буфера

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

    недействительный.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Ясные флаги на буфере. @discussion: buffer_flags и = ~flags

    Объявление

    Objective C

    void buf_clearflags ( buf_t, int32_t );

    Параметры

    bp

    Буфер, чьи флаги для очистки.

    flags

    Флаги для удаления из маски буфера. B_LOCKED/B_NOCACHE/B_ASYNC/B_READ/B_WRITE/B_PAGEIO/B_FUA

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

    недействительный.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Клонируйте буфер с ограниченным диапазоном и дополнительным обратным вызовом.

    Объявление

    Objective C

    buf_t buf_clone ( buf_t, int, int, void (*)(buf_t, void *), void * );

    Параметры

    bp

    Буфер для клонирования.

    io_offset

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

    io_size

    Размер буферной области в новом буфере, в смысле buf_count ().

    iodone

    Обратный вызов, который вызовут от buf_biodone (), когда I/O завершается, в смысле buf_setcallback ().

    arg

    Параметр для передачи iodone () обратного вызова.

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

    NULL, если io_offset/io_size комбинация недопустима для буфера, который будет клонирован; иначе, новый буфер.

    Обсуждение

    Генерирует буфер, который идентичен его параметру «BP» за исключением того, что он охватывает подмножество данных оригинала. Буфер, который будет клонирован, должен был быть выделен с buf_alloc (). Проверяет его параметры, чтобы удостовериться, что подмножество данных является когерентным. Дополнительно, добавляют функция обратного вызова и параметр ей, чтобы быть вызванными, когда I/O завершается (как с buf_setcallback (), но B_ASYNC не установлен). Если исходный буфер имел набор upl через buf_setupl (), этот upl копируется в новый буфер; иначе, указатель данных оригинала используется сырые данные. Буфер должен быть выпущен с buf_free ().

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Получите количество допустимых байтов в буфере. Это может быть меньше, чем площадь, выделенная к буферу.

    Объявление

    Objective C

    uint32_t buf_count ( buf_t );

    Параметры

    bp

    Буфер, чье количество байта для получения.

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

    Количество байта.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Создайте теневой буфер с дополнительным частным хранением и дополнительным обратным вызовом.

    Объявление

    Objective C

    buf_t buf_create_shadow ( buf_t bp, boolean_t force_copy, uintptr_t external_storage, void (*iodone)(buf_t, void *), void *arg );

    Параметры

    bp

    Буфер к тени.

    force_copy

    ЕСЛИ ЭТО ПРАВДА, не соединяйте shadaow с 'BP' и если 'external_storage' == NULL, вызовите копию данных, связанных с 'BP'.

    external_storage

    Если не-NULL, партнер это с новым буфером, поскольку его хранение вместо хранения в настоящее время связывалось с 'BP'.

    iodone

    Обратный вызов, который вызовут от buf_biodone (), когда I/O завершается, в смысле buf_setcallback ().

    arg

    Параметр для передачи iodone () обратного вызова.

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

    NULL, если буфер, чтобы быть затененным не является B_META или основным буфером (т.е. не теневым буфером); иначе, новый буфер.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Получите адрес, в котором хранятся данные буфера; для iobufs это должно быть установлено с buf_setdataptr (). См. buf_map ().

    Объявление

    Objective C

    uintptr_t buf_dataptr ( buf_t );

    Параметры

    bp

    Буфер, чей указатель данных для получения.

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

    Указатель данных; NULL, если сброшено.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Получите устройство ID, связанный с буфером.

    Объявление

    Objective C

    dev_t buf_device ( buf_t );

    Параметры

    bp

    Буфер, чье устройство ID для получения.

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

    ID устройства.

    Обсуждение

    В традиционном буферном использовании этим значением является НОДЕВ, пока buf_strategy () не вызывается, если buf_getblk () не был передан устройство vnode. Это установлено на iobuf, если buf_alloc () передается устройство vnode или если вызывают buf_setdevice ().

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Получите конечное смещение грязной области, связанной с буфером.

    Объявление

    Objective C

    uint32_t buf_dirtyend ( buf_t );

    Параметры

    bp

    Буфер, чей грязный конец для получения.

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

    0, если буфер сочтен чистым; размер буфера, если найдено грязного. Может быть установлен в любое значение вызывающими сторонами buf_setdirtyend ().

    Обсуждение

    Если данные буфера были сочтены incore и грязные, грязный конец является размером блока; иначе, если кто-то за пределами xnu явно не изменяет его путем вызова buf_setdirtyend (), это будет нуль.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Получите стартовое смещение грязной области, связанной с буфером.

    Объявление

    Objective C

    uint32_t buf_dirtyoff ( buf_t );

    Параметры

    bp

    Буфер, чье грязное смещение для получения.

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

    Грязное смещение (0, если не явно измененный).

    Обсуждение

    Грязное смещение является нулем, если кто-то явно не вызывает buf_setdirtyoff () (который ядро не делает).

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Получите специфичные для драйвера данные от буфера.

    Объявление

    Objective C

    void * buf_drvdata ( buf_t );

    Параметры

    bp

    Буфер, чьи данные драйвера для получения.

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

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

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Получите ошибочное значение, связанное с буфером.

    Объявление

    Objective C

    errno_t buf_error ( buf_t );

    Параметры

    bp

    Буфер, чье ошибочное значение для получения.

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

    Ошибочное значение, непосредственно.

    Обсуждение

    Ошибки установлены с buf_seterror ().

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Получите набор флагов на буфере.

    Объявление

    Objective C

    int32_t buf_flags ( buf_t );

    Параметры

    bp

    Буфер, чьи флаги для захвата.

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

    флаги.

    Обсуждение

    Допустимые флаги являются B_LOCKED/B_NOCACHE/B_ASYNC/B_READ/B_WRITE/B_PAGEIO/B_FUA.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Запишите грязные блоки файла в диск.

    Объявление

    Objective C

    void buf_flushdirtyblks ( vnode_t, int, int, const char * );

    Параметры

    vp

    vnode, чьи блоки для сбрасывания.

    wait

    Ожидайте записей для завершения перед возвратом.

    flags

    Может передать нуль, означая «сброс все грязные буферы». BUF_SKIP_NONLOCKED: Пропустите буферы, которые не заняты, когда мы встречаемся с ними. BUF_SKIP_LOCKED: Пропустите буферы, которые заняты, когда мы встречаемся с ними.

    msg

    Строка для передачи msleep ().

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

    недействительный.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Освободите буфер, выделенный с buf_alloc ().

    Объявление

    Objective C

    void buf_free ( buf_t );

    Параметры

    bp

    Буфер к свободному.

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

    недействительный.

    Обсуждение

    Хранение (UPL, указатель данных) связанный с iobuf должно быть освобождено вручную.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Проверьте, были ли данные буфера найдены в ядре.

    Объявление

    Objective C

    int buf_fromcache ( buf_t );

    Параметры

    bp

    Буфер для тестирования.

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

    Ненулевой, если мы получили данные этого буфера, не делая I/O, 0 если нет.

    Обсуждение

    Возвратит истину после buf_getblk, находящего допустимый буфер в кэше или соответствующие данные в ядре (но не в буфере).

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Получите специфичные для файловой системы данные от буфера.

    Объявление

    Objective C

    void * buf_fsprivate ( buf_t );

    Параметры

    bp

    Буфер, чьи данные файловой системы для получения.

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

    Непрозрачные данные файловой системы.

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

    Objective C

    #include <buf.h>;

    Доступность

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

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

    Объявление

    Objective C

    int buf_fua ( buf_t );

    Параметры

    bp

    Буфер для тестирования.

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

    Ненулевой, если буфер отмечен для записи - через, 0 если нет.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Традиционная буферная подпрограмма кэша для получения буфера, соответствующего логическому блоку в файле.

    Объявление

    Objective C

    buf_t buf_getblk ( vnode_t, daddr64_t, int, int, int, int );

    Параметры

    vp

    Файл, для которого можно получить блок.

    blkno

    Номер логического блока.

    size

    Размер блока.

    slpflag

    Флаг для передачи msleep () при ожидании буфера для становления незанятым.

    slptimeo

    Время, в миллисекундах, для ожидания буфера для становления незанятым. 0 средних значений для ожидания неопределенно.

    operation

    BLK_READ: хочу буфер чтения. BLK_WRITE: хочу буфер записи. BLK_META: хочу буфер метаданных. BLK_ONLYVALID: только возвратите буферы, найденные в ядре (не выделяйте снова), и не изменяйте размер буфера. Последний комментарий означает, что, если данный логический блок найден в ядре с различным размером, чем, что требуют, не будет изменен размер буфера.

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

    Буфер, найденный в ядре или недавно выделенный, или содержащий допустимые данные или готовый к I/O.

    Обсуждение

    buf_getblk () получает буфер, не обязательно содержащий допустимые данные, представляя блок в файле. Буфер метаданных будет возвращен с его собственным выделенным зоне хранением, которым управляет традиционный уровень буферного кэша, тогда как буферы данных будут возвращены сцепленные в поддержку UBC (который фактически управляет кэшированием данных). buf_getblk () сначала ищет буферный заголовок в кэше; если буфер будет в ядре, но занят, то buf_getblk () будет ожидать его для становления незанятым, в зависимости от slpflag и slptimeo параметров. Если буфер сочтен незанятым и является буфером метаданных, он должен уже содержать допустимые данные и будет возвращен непосредственно; буферам данных сконфигурируют UPL для подготовки к взаимодействию с базовым UBC. Если буфер будет найден в ядре, то он будет отмечен как таковой, и buf_fromcache () возвратит истину. Буфер выделяется и инициализируется (но не заполняется данными), если ни один не найден в ядре. buf_bread (), buf_breadn (), buf_meta_bread (), и buf_meta_breadn () все буферы возврата, полученные с buf_getblk ().

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Получите буфер метаданных, отмеченный недопустимый и не связанный с любым vnode.

    Объявление

    Objective C

    buf_t buf_geteblk ( int );

    Параметры

    size

    Размер буфера.

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

    Всегда возвращает новый буфер.

    Обсуждение

    Буфер возвращается с выделенным зоне хранением указанного размера, отметил B_META и недопустимый. Это не имеет никакого vnode и не видимо в буферном хеше.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Лишите законной силы файловую систему логический блок в файле.

    Объявление

    Objective C

    errno_t buf_invalblkno ( vnode_t, daddr64_t, int );

    Параметры

    bp

    Буфер, чей блок для лишения законной силы.

    lblkno

    Номер логического блока.

    flags

    BUF_WAIT: ожидайте занятых буферов, чтобы стать незанятыми и лишить законной силы их тогда. Иначе, просто возвратите EBUSY для занятых блоков.

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

    0 для успеха, EINVAL, если vp не является файлом устройств.

    Обсуждение

    buf_invalblkno () пытается сделать данные для данного блока в файле недопустимыми; если буфер для того блока найден в ядре и не занят, мы отмечаем его недопустимый и вызываем buf_brelse () (см. параметрический усилитель «флагов» для того, что происходит, если буфер занят). buf_brelse (), замечая, что это недопустимо, желание, возвратит буфер пусто-буферному списку и скажет подсистеме VM отказываться от соответствующих страниц. Данные не будут записаны в запоминающее устройство - это будет отвергнуто. Если рассматриваемый блок был получен с buf_getblk (), Обратите внимание на то, что эта функция будет только работать. Если данные были считаны в ядро, не используя традиционные буферные подпрограммы кэша, buf_invalblkno () не будет в состоянии лишить законной силы его - это включает использование iobufs.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Лишите законной силы все блоки, связанные с vnode.

    Объявление

    Objective C

    int buf_invalidateblks ( vnode_t, int, int, int );

    Параметры

    bp

    Буфер, чьи данные для лишения законной силы.

    flags

    BUF_WRITE_DATA: запишите грязные данные в диск с VNOP_BWRITE () перед выгонянием буферных записей кэша. BUF_SKIP_META: не лишайте законной силы блоки метаданных.

    slpflag

    Флаги для передачи «msleep» при ожидании для получения занятых буферов.

    slptimeo

    Тайм-аут в «Гц» (1/100 второй) для ожидания буфера для становления незанятым прежде, чем проснуться от сна и перезапустить сканирование.

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

    0 для успеха, ошибка оценивает от msleep ().

    Обсуждение

    Эта функция делает для всех блоков, связанных с vnode, что buf_invalblkno делает для одного блока. Снова, это только будет в состоянии лишить законной силы данные, заполненные с традиционными буферными подпрограммами кэша, т.е. buf_getblk () и вызывающие стороны этого. В отличие от buf_invalblkno (), это может быть сделано записать грязные данные в диск вместо того, чтобы отвергнуть его.

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

    Objective C

    #include <buf.h>;

    Доступность

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

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

    Объявление

    Objective C

    void buf_iterate ( vnode_t, int (*)(buf_t, void *), int, void * );

    Параметры

    vp

    vnode, чьи буферы для сканирования.

    callout

    Функция для обращения к каждому буферу. Должен возвратить один из: BUF_RETURNED: buf_iterate () должен вызвать buf_brelse () на буфере. BUF_RETURNED_DONE: buf_iterate () должен вызвать buf_brelse () на буфере и затем прекратить выполнять итерации. BUF_CLAIMED: buf_iterate () должен продолжать выполнять итерации (и не вызвать buf_brelse ()). BUF_CLAIMED_DONE: buf_iterate () должен прекратить выполнять итерации (и не вызвать buf_brelse ()).

    flag

    BUF_SKIP_NONLOCKED: Пропустите буферы, которые не заняты, когда мы встречаемся с ними. BUF_SKIP_LOCKED: Пропустите буферы, которые заняты, когда мы встречаемся с ними. BUF_SCAN_CLEAN: Вызовите на чистых буферах. BUF_SCAN_DIRTY: Вызовите на грязных буферах. BUF_NOTIFY_BUSY: Если буфер не может быть получен, передайте буфер NULL выноске; иначе, тот буфер будет тихо пропущен.

    arg

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

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

    недействительный.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Свяжите номер логического блока с буфером.

    Объявление

    Objective C

    daddr64_t buf_lblkno ( buf_t );

    Параметры

    bp

    Буфер, чей номер логического блока для получения.

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

    Номер блока.

    Обсуждение

    Номер логического блока установлен на традиционно используемых буферах параметром, переданным buf_getblk (), например buf_bread ().

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Получите виртуальные отображения для буферных данных.

    Объявление

    Objective C

    errno_t buf_map ( buf_t, caddr_t * );

    Параметры

    bp

    Буфер, чей, отображаясь, чтобы найти или создать.

    io_addr

    Место назначения для отображения адреса.

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

    0 для успеха, ENOMEM, если неспособный для отображения буфера.

    Обсуждение

    Для буферов, создаваемых через buf_getblk () (т.е. традиционное буферное использование кэша), buf_map () просто, возвращает адрес, в котором данные были отображены but_getblk (). Для буфера B_CLUSTER, т.е. iobuf, состоянием upl которого управляют вручную, существует две возможности. Если буфер создавался с базовым «реальным» буфером через cluster_bp (), отображение «реального» буфера возвращается. Иначе, буфер создавался с buf_alloc (), и buf_setupl () впоследствии вызвали; buf_map () вызовет ubc_upl_map (), чтобы получить отображение для upl буфера и возвратить запуск того отображения плюс смещение upl буфера (набор в buf_setupl ()). В последнем случае, buf_unmap () должен позже быть вызван для разъединения отображения.Примечание: buf_map () не устанавливает буферный указатель данных; это должно быть сделано с buf_setdataptr ().

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Отметьте буфер как «в возрасте», т.е. как хороший кандидат, чтобы быть отброшенными и снова использованными после buf_brelse ().

    Объявление

    Objective C

    void buf_markaged ( buf_t );

    Параметры

    bp

    Буфер для маркировки.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Отметьте буфер как отложенная запись: отметьте его грязный, фактически не планируя I/O.

    Объявление

    Objective C

    void buf_markdelayed ( buf_t );

    Параметры

    bp

    Буфер для маркировки.

    Обсуждение

    Данные будут сброшены к диску в некоторое более позднее время, не с brelse (). Синхронизация ()/fsync () или повторное использование потребности давления буфера заставит его быть записанным обратно к диску.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Отметьте буфер, как прерванный во время I/O.

    Объявление

    Objective C

    void buf_markeintr ( buf_t );

    Параметры

    bp

    Буфер для маркировки.

    Обсуждение

    Официанты для I/O для завершения (buf_biowait ()) возвратятся с EINTR, когда разбужено. buf_markeintr самостоятельно не делает пробуждения.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Отметьте буфер для записи через дисковый кэш, если диск поддерживает его.

    Объявление

    Objective C

    void buf_markfua ( buf_t );

    Параметры

    bp

    Буфер для маркировки.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Отметьте буфер как не наличие допустимых данных и быть готовым к непосредственному повторному использованию после buf_brelse ().

    Объявление

    Objective C

    void buf_markinvalid ( buf_t );

    Параметры

    bp

    Буфер для маркировки.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Отметьте буфер, как являющийся вероятным содержать статические данные.

    Объявление

    Objective C

    void buf_markstatic ( buf_t );

    Параметры

    bp

    Буфер для маркировки.

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

    недействительный.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Синхронно считайте блок метаданных файла.

    Объявление

    Objective C

    errno_t buf_meta_bread ( vnode_t, daddr64_t, int, kauth_cred_t, buf_t * );

    Параметры

    vp

    Файл, из которого можно читать.

    blkno

    Логическое (файловая система) номер блока для чтения.

    size

    Размер блока; не используйте для размеров> 4K.

    cred

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

    bpp

    Целевой указатель для буфера.

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

    0 для успеха или ошибки от buf_biowait ().

    Обсуждение

    buf_meta_bread () является традиционным способом считать единственный логический блок файла через буферный кэш. Это пытается найти буферную и соответствующую страницу (ы) в ядре, вызывает VNOP_STRATEGY при необходимости для загрузки данных в память и ожидает I/O для завершения. Это не должно использоваться для чтения блоков больших, чем 4K (одна страница VM) в размере; используйте кластерные подпрограммы для больших чтений. Если считанные блоки значительно меньше, чем размер страницы, чтение метаданных через традиционный буферный кэш, в отличие от чтения данных, эффективно и мотивировано, особенно.

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

    Objective C

    #include <buf.h>;

    Доступность

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

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

    Объявление

    Objective C

    errno_t buf_meta_breadn ( vnode_t, daddr64_t, int, daddr64_t *, int *, int, kauth_cred_t, buf_t * );

    Параметры

    vp

    Файл, из которого можно читать.

    blkno

    Логическое (файловая система) номер блока для чтения синхронно.

    size

    Размер блока; не используйте для размеров> 4K.

    rablks

    Массив номеров логического блока для асинхронного чтения-aheads.

    rasizes

    Массив размеров блока для асинхронного чтения-aheads, каждый индекс, соответствующий тому же индексу в «rablks».

    nrablks

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

    cred

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

    bpp

    Целевой указатель для буфера.

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

    0 для успеха или ошибки от buf_biowait ().

    Обсуждение

    buf_meta_breadn () читает один блок синхронно в стиле buf_meta_bread () и исчерпывает указанный набор асинхронных чтений для улучшения вероятности будущих удачных обращений в кэш. Это не должно использоваться для чтения блоков больших, чем 4K (одна страница VM) в размере; используйте кластерные подпрограммы для больших чтений.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Свяжите процесс с этим буфером.

    Объявление

    Objective C

    proc_t buf_proc ( buf_t );

    Параметры

    bp

    Буфер, чей связанный процесс для нахождения.

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

    Связанный процесс, возможно NULL.

    Обсуждение

    buf_proc () будет обычно возвращать NULL; процесс в настоящее время только связан с буфером в случае физиотерапевта () вызов.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Свяжите учетные данные с буфером для чтения.

    Объявление

    Objective C

    kauth_cred_t buf_rcred ( buf_t );

    Параметры

    bp

    Буфер, чьи учетные данные для захвата.

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

    Учетные данные, если это существует, еще NULL.

    Обсуждение

    Никакая ссылка не взята; если за учетные данные нужно постоянно держаться, дополнительная ссылка должна быть взята с kauth_cred_ref.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Установите флаги избыточности на буфере.

    Объявление

    Objective C

    uint32_t buf_redundancy_flags ( buf_t );

    Параметры

    bp

    Буфер, избыточность которого отмечает для захвата.

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

    флаги.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Флаг I/O сброса утверждает на буфере.

    Объявление

    Objective C

    void buf_reset ( buf_t, int32_t );

    Параметры

    bp

    Буфер, чьи флаги для захвата.

    flags

    Флаги для установки на буфере: B_READ, B_WRITE, B_ASYNC, B_NOCACHE.

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

    недействительный.

    Обсуждение

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

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Получите количество байтов, не использованных I/O на буфере.

    Объявление

    Objective C

    uint32_t buf_resid ( buf_t );

    Параметры

    bp

    Буфер, чье выдающееся количество для получения.

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

    Количество незаписанных/непрочитанных байтов.

    Обсуждение

    Набор, когда завершается I/O операции.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Избыточность набора отмечает на буфере. @discussion: buffer_redundancy_flags | = флаги

    Объявление

    Objective C

    void buf_set_redundancy_flags ( buf_t, uint32_t );

    Параметры

    bp

    Буфер, чьи флаги для установки.

    flags

    Флаги для добавления к флагам избыточности буфера

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

    недействительный.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Установите физический номер блока, связанный с буфером.

    Объявление

    Objective C

    void buf_setblkno ( buf_t, daddr64_t );

    Параметры

    bp

    Буфер, чей физический номер блока для установки.

    blkno

    Номер блока для установки.

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

    недействительный.

    Обсуждение

    Физический номер блока обычно устанавливается кластерным уровнем или buf_getblk ().

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Установите функцию, которую вызовут один раз, когда завершится I/O на буфере.

    Объявление

    Objective C

    errno_t buf_setcallback ( buf_t, void (*)(buf_t, void *), void * );

    Параметры

    bp

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

    callback

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

    transaction

    Дополнительный параметр функции обратного вызова.

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

    0; всегда успешно выполняется.

    Обсуждение

    Набор выноски с одним выстрелом с buf_setcallback () вызовут от buf_biodone (), когда завершится I/O. Это будет передано параметр «транзакции», а также буфер. buf_setcallback () также отмечает буфер как B_ASYNC.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Количество набора допустимых байтов в буфере. Это может быть меньше, чем площадь, выделенная к буферу.

    Объявление

    Objective C

    void buf_setcount ( buf_t, uint32_t );

    Параметры

    bp

    Буфер, чье количество байта для установки.

    bcount

    Количество для установки.

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

    недействительный.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Установите адрес, в котором будут храниться данные буфера.

    Объявление

    Objective C

    void buf_setdataptr ( buf_t, uintptr_t );

    Параметры

    bp

    Буфер, чей указатель данных на установленный.

    data

    Указатель на область данных.

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

    недействительный.

    Обсуждение

    В традиционном буферном использовании указатель данных будет установлен автоматически. Эта подпрограмма полезна с iobufs (выделенный с buf_alloc ()).

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Установите устройство, связанное с буфером.

    Объявление

    Objective C

    errno_t buf_setdevice ( buf_t, vnode_t );

    Параметры

    bp

    Буфер, чье устройство ID для установки.

    vp

    Устройство для установки на буфере.

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

    0 для успеха, EINVAL, если vp не является файлом устройств.

    Обсуждение

    Устройство буфера установлено в buf_strategy () (или в buf_getblk (), если файл является устройством). Если buf_alloc () передается устройство vnode, это также установлено на iobuf.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Установите конечное смещение грязной области, связанной с буфером.

    Объявление

    Objective C

    void buf_setdirtyend ( buf_t, uint32_t );

    Параметры

    bp

    Буфер, чей грязный конец установленному.

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

    недействительный.

    Обсуждение

    Если данные буфера были сочтены incore и грязные, грязный конец является размером блока; иначе, если кто-то за пределами xnu явно не изменяет его путем вызова buf_setdirtyend (), это будет нуль.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Установите стартовое смещение грязной области, связанной с буфером.

    Объявление

    Objective C

    void buf_setdirtyoff ( buf_t, uint32_t );

    Параметры

    bp

    Буфер, чей грязный конец установленному.

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

    недействительный.

    Обсуждение

    Это значение является нулем, если кто-то не установил его явно.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Установите специфичные для драйвера данные по буферу.

    Объявление

    Objective C

    void buf_setdrvdata ( buf_t, void * );

    Параметры

    bp

    Буфер, чьи данные драйвера для установки.

    drvdata

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

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

    недействительный.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Установите ошибочное значение на буфере.

    Объявление

    Objective C

    void buf_seterror ( buf_t, errno_t );

    Параметры

    bp

    Буфер, чье ошибочное значение для установки.

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

    недействительный.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Набор отмечает на буфере. @discussion: buffer_flags | = флаги

    Объявление

    Objective C

    void buf_setflags ( buf_t, int32_t );

    Параметры

    bp

    Буфер, чьи флаги для установки.

    flags

    Флаги для добавления к маске буфера. B_LOCKED/B_NOCACHE/B_ASYNC/B_READ/B_WRITE/B_PAGEIO/B_FUA

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

    недействительный.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Установите специфичные для файловой системы данные по буферу.

    Объявление

    Objective C

    void buf_setfsprivate ( buf_t, void * );

    Параметры

    bp

    Буфер, чьи данные файловой системы для установки.

    fsprivate

    Непрозрачные данные файловой системы.

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

    недействительный.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Установите номер логического блока, связанный с буфером.

    Объявление

    Objective C

    void buf_setlblkno ( buf_t, daddr64_t );

    Параметры

    bp

    Буфер, чей номер логического блока для установки.

    lblkno

    Номер блока для установки.

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

    недействительный.

    Обсуждение

    Номер логического блока установлен на традиционно используемых буферах параметром, переданным buf_getblk (), например buf_bread ().

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Установите количество байтов, выдающихся для I/O в буфере.

    Объявление

    Objective C

    void buf_setresid ( buf_t, uint32_t );

    Параметры

    bp

    Буфер, чье выдающееся количество для установки.

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

    Количество незаписанных/непрочитанных байтов.

    Обсуждение

    Набор, когда завершается I/O операции. Примеры: вызванный IOStorageFamily, когда I/O завершается, часто обращался к «исходному» буферу с просьбой при использовании буфера, которым управляют, выполнять I/O от имени первого.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Размер набора области данных, выделенной буферу.

    Объявление

    Objective C

    void buf_setsize ( buf_t, uint32_t );

    Параметры

    bp

    Буфер, чей размер для установки.

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

    недействительный.

    Обсуждение

    Может быть больше, чем сумма допустимых данных в буфере. Должен использоваться кодом, вручную обеспечивающим хранение для iobuf, одного выделенного с buf_alloc ().

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Установите UPL (Универсальный Список Страницы) и сместите там на буфере.

    Объявление

    Objective C

    errno_t buf_setupl ( buf_t, upl_t, uint32_t );

    Параметры

    bp

    Буфер, чей upl для установки.

    upl

    UPL для установки в буфере. @parma смещают Смещение в upl, в котором начинаются соответствующие данные.

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

    0 для успеха, EINVAL, если буфер не был выделен с buf_alloc ().

    Обсуждение

    buf_setupl () нужно только вызвать на буферах, выделенных с buf_alloc (). Последующий вызов к buf_map () отобразит UPL и отдаст адрес, в котором начинаются данные. После buf_setupl () вызывается, буфер отмечен B_CLUSTER; когда дело обстоит так, buf_strategy () предполагает, что буфер правильно сконфигурирован, чтобы быть переданным уровню устройств без модификации. При передаче NULL upl очистит upl и флаг B_CLUSTER на буфере.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Установите vnode, связанный с буфером.

    Объявление

    Objective C

    void buf_setvnode ( buf_t, vnode_t );

    Параметры

    bp

    Буфер, чей vnode для установки.

    vp

    vnode для присоединения к буферу.

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

    недействительный.

    Обсуждение

    Этот вызов не должен использоваться на традиционных буферах; это для использования с iobufs.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • если 'BP' является тенью другого буфера, возвращает true.

    Объявление

    Objective C

    int buf_shadow ( buf_t bp );

    Параметры

    bp

    Буфер для запросов.

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

    1, если 'BP' является тенью, 0 иначе.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Получите размер области данных, выделенной буферу.

    Объявление

    Objective C

    uint32_t buf_size ( buf_t );

    Параметры

    bp

    Буфер, чей размер для получения.

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

    Размер.

    Обсуждение

    Может быть больше, чем сумма допустимых данных в буфере.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Проверьте, содержит ли буфер статические данные.

    Объявление

    Objective C

    int buf_static ( buf_t );

    Параметры

    bp

    Буфер для тестирования.

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

    Ненулевой, если буфер имеет статические данные, 0 иначе.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Передайте запрос I/O на буфер вниз к уровню устройств.

    Объявление

    Objective C

    errno_t buf_strategy ( vnode_t, void * );

    Параметры

    devvp

    Устройство, на котором можно выполнить I/O

    ap

    структура vnop_strategy_args (самое главное, буфер).

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

    0 для успеха или ошибок от файловой системы или уровней устройств.

    Обсуждение

    Это - одна из самых важных подпрограмм в буферном уровне кэша. Для буферов, полученных через buf_getblk, это обрабатывает находящие физические номера блока для I/O (с ВНОП_БЛКТУФФ и VNOP_BLOCKMAP), упаковывая I/O в блоки размера страницы, и инициируя I/O на диске путем вызова подпрограммы стратегии устройства. Если UPL буфера был установлен вручную с buf_setupl (), это предполагает, что запрос уже правильно сконфигурирован с номером блока и размером, делимым размером страницы, и просто вызовет непосредственно к устройству.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Отображения выпуска для буферных данных.

    Объявление

    Objective C

    errno_t buf_unmap ( buf_t );

    Параметры

    bp

    Буфер, чей, отображаясь, чтобы найти или создать.

    io_addr

    Место назначения для отображения адреса.

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

    0 для успеха, EINVAL, если неспособный для неотображения буфера.

    Обсуждение

    Для буферов, создаваемых через buf_getblk () (т.е. традиционное буферное использование кэша), buf_unmap () ничего не делает; buf_brelse () будет заботиться о неотображении. Для буфера B_CLUSTER, т.е. iobuf, состоянием upl которого управляют вручную, существует две возможности. Если буфер создавался с базовым «реальным» буфером через cluster_bp (), buf_unmap () ничего не делает; buf_brelse () на базовом буфере разъединит отображение. Иначе, буфер создавался с buf_alloc (), и buf_setupl () впоследствии вызвали; buf_map () создал отображение. В этом случае, buf_unmap () не отобразит буфер.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Получите upl (Универсальный Список Страницы) связанный с буфером.

    Объявление

    Objective C

    void * buf_upl ( buf_t );

    Параметры

    bp

    Буфер, чей upl для захвата.

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

    upl буфера, если это имеет один, еще NULL.

    Обсуждение

    Буферы, выделенные с buf_alloc (), не возвращаются с upl, и традиционные буферы только имеют upl, в то время как I/O происходит.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Получите смещение в UPL, в котором начинается этот буфер.

    Объявление

    Objective C

    uint32_t buf_uploffset ( buf_t );

    Параметры

    bp

    Буфер, чей uploffset для захвата.

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

    uploffset буфера - не проверяет, целесообразно ли то значение для этого буфера.

    Обсуждение

    К этой функции нужно только обратиться iobufs, т.е. буферы, выделенные с buf_alloc ().

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Проверьте, содержит ли буфер допустимые данные.

    Объявление

    Objective C

    int buf_valid ( buf_t );

    Параметры

    bp

    Буфер для тестирования.

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

    Ненулевой, если буфер имеет допустимые данные, 0 если нет.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Получите vnode, связанный с буфером.

    Объявление

    Objective C

    vnode_t buf_vnode ( buf_t );

    Параметры

    bp

    Буфер, чей vnode для получения.

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

    vnode буфера.

    Обсуждение

    Каждый буфер связан с файлом. Поскольку существует I/O в рейсе, на этом vnode существует iocount; это - возвращенный WITHOUT дополнительный iocount, и vnode_put () нельзя вызвать.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Свяжите учетные данные с буфером для записи.

    Объявление

    Objective C

    kauth_cred_t buf_wcred ( buf_t );

    Параметры

    bp

    Буфер, чьи учетные данные для захвата.

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

    Учетные данные, если это существует, еще NULL.

    Обсуждение

    Никакая ссылка не взята; если за учетные данные нужно постоянно держаться, дополнительная ссылка должна быть взята с kauth_cred_ref.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Скорректируйте количество буфера, чтобы быть не больше, чем максимальным физическим размером передачи I/O для архитектуры узла.

    Объявление

    Objective C

    u_int minphys ( buf_t bp );

    Параметры

    bp

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

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

    Новое количество байта.

    Обсуждение

    физиотерапевт () берет в качестве параметра функцию к связанным размерам передачи для каждого VNOP_STRATEGY () вызов. minphys () является реализацией по умолчанию. Это вызывает buf_setcount () для проведения подсчета буфера минута () ее текущего количества и макс. размера I/O для архитектуры узла.

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

    Objective C

    #include <buf.h>;

    Доступность

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

  • Выполните I/O на устройстве для предназначения для памяти, описанной uio.

    Объявление

    Objective C

    int physio ( void (*)(buf_t), buf_t, dev_t, int, u_int (*)(buf_t), struct uio *, int );

    Параметры

    f_strategy

    Подпрограмма стратегии для вызова для инициирования I/O.

    bp

    Буфер, чтобы сконфигурировать и передать подпрограмме стратегии; может быть NULL.

    dev

    Устройство, на котором можно выполнить I/O.

    flags

    B_READ или B_WRITE.

    f_minphys

    Функция, вызывающая buf_setcount () для установки количества байта, которое является соответственно маленьким для рассматриваемого устройства. Количество байта возвратов, установленное (или неизменное) на буфере.

    uio

    UIO описание операции I/O.

    blocksize

    Размер логического блока для этого vnode.

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

    0 для успеха; EFAULT для недопустимого uio; ошибки от buf_biowait ().

    Обсуждение

    физиотерапевт () позволяет I/O непосредственно от устройства до памяти пространства пользователя. Это ожидает всего I/O для завершения перед возвратом.

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

    Objective C

    #include <buf.h>;

    Доступность

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