rsrc_request_t

Структура, характеризующая резервируемые системные ресурсы

Прототип:

#include <sys/rsrcdbmgr.h>
#include <sys/rsrcdbmsg.h>
typedef struct _rsrc_request {
_Uint64t length;
_Uint64t align;
_Uint64t start;
_Uint64t end;
_Uint32t flags;
_Uint32t zero[2];
const char *name;
} rsrc_request_t;

Описание:

Тип используется в функциях rsrcdbmgr_attach() и rsrcdbmgr_detach() для резервирования системных ресурсов. Структура включает следующие поля:

length Размер ресурса, который необходимо зарезервировать. Обязательно для заполнения.
align Выравнивание ресурса
start
end Диапазон ресурса для резервирования.
flags Тип ресурса, а также флаги, влияющие на запрос. Можно либо установить это поле в значение, соответствующее одну из нижеперечисленных типов ресурсов (определенных в <sys/rsrcdbmgr.h>), либо установить их в RSRCDBMGR_FLAG_NAME и заполнить поле имени:
RSRCDBMGR_DMA_CHANNEL
канал DMA
RSRCDBMGR_IO_PORT
адрес порта ввода/вывода
RSRCDBMGR_IRQ
адрес прерывания
RSRCDBMGR_MEMORY
адрес памяти
RSRCDBMGR_PCI_MEMORY
адрес памяти PCI
Можно использовать ИЛИ для комбинации следующих битов (также определенных в <sys/rsrcdbmgr.h>):
RSRCDBMGR_FLAG_ALIGN
содержимое поля выравнивания является допустимым, и запрошенный ресурс начинается с заданного выравнивания.
RSRCDBMGR_FLAG_LIST
это один элемент в списке для поиска.
RSRCDBMGR_FLAG_NAME
поле имени является допустимым и является именем системы.
RSRCDBMGR_FLAG_RANGE
содержимое полей start и end является допустимым, а запрошенный ресурс находится в диапазоне от start до end включительно.
RSRCDBMGR_FLAG_SHARE
другие процессы могут иметь доступ к выделенному ресурсу.
RSRCDBMGR_FLAG_TOPDOWN
начать поиск свободного блока ресурсов с end. Если установить RSRCDBMGR_FLAG_RANGE, то поиск начинется с конца доступного диапазона.
name
Указатель на имя класса ресурса (по умолчанию NULL). Это поле используется, только если установлено RSRCDBMGR_FLAG_NAME в поле флагов. Имя не должно начинаться с косой черты (/) и должно иметь вид:
type[/subtype[/subsubtype]].
Числовые константы сопоставляются со строковыми именами ресурсов следующим образом:
Флаг Имя
RSRCDBMGR_MEMORY memory
RSRCDBMGR_IRQ irq
RSRCDBMGR_IO_PORT io
RSRCDBMGR_DMA_CHANNEL dma
RSRCDBMGR_PCI_MEMORY pcimemory
Например, обычные порты ввода/вывода (RSRCDBMGR_IO_PORT) отображаются в строку io. Если имеется специальный класс портов io, можно получить к нему доступ с именем io/myspecialio. Компоненты подтипа являются конкретными экземплярами иерархии, и поэтому запросы, которые выполняются выше (например, запрос io), пытаются выдать ресурсы, которые не являются частью этих конкретных экземпляров.

Классификация:

ЗОСРВ «Нейтрино»

Тематические ссылки:

rsrcdbmgr_attach(), rsrcdbmgr_detach()




Предыдущий раздел: Описание API системной библиотеки