rsrcdbmgr_devno_attach()

Присвоить старший и младший номер устройства

Прототип:

#include <sys/rsrcdbmgr.h>
#include <sys/rsrcdbmsg.h>
dev_t rsrcdbmgr_devno_attach( const char *name,
int minor_request,
int flags );

Аргументы:

name
Название класса устройств, для которого требуется получить старший номер. Эта строка может быть произвльной, однако некоторые имена определены в <sys/ftype.h>.
minor_request
Младший номер устройства, который требуется зарезервировать, или -1, чтобы система могла назначить следующий доступный младший номер.
flags
В настоящее время флаги не реализованы; следует передавать ноль для этого аргумента.

Библиотека:

libc

Описание:

Функция rsrcdbmgr_devno_attach() резервирует номер устройства, состоящий из:

В системе имеется максимум 64 основных числа (от 0 до 63) и максимум 1024 младших номера (от 0 до 1023) на один старший номер.

Старшие и младшие номера используются только менеджерами ресурсов и предоставляются через поле rdev структуры iofunc_attr_t и, соответственно, поле st_rdev структуры struct stat. Они не требуются для корректной работы; на простых устройствах запись будет симулирована.

Имена классов

Как было сказано выше, название класса устройств может быть произвольным. Следующие имена классов определены в <sys/ftype.h>:

Константа Значение Класс
_MAJOR_PATHMGR "pathmgr" Используется только менеджером путей
_MAJOR_DEV "dev" Устройства в /dev только с одним экземпляром (например, /dev/tty)
_MAJOR_BLK_PREFIX "blk-" Все блочные устройства (например, /dev/hd[0-9]* будет "blk-hd")
_MAJOR_CHAR_PREFIX "char-" Все символьные устройства (например, /dev/ser[0-9]*будет "char-ser")
_MAJOR_FSYS "fsys" Все файловые системы

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

Объект dev_t, содержащий старшее и младшее число.

Если возникла ошибка функция возвращает -1, код ошибки записывается в errno.

Можно извлечь значения старшего и младшего чисел из объекта dev_t с помощью макросов major() и minor(), определенных в <sys/types.h>. Для получения дополнительной информации см. документацию по struct stat.

Коды ошибок:

EINVAL
Некорректный аргумент.

Примеры:

#include <sys/rsrcdbmgr.h>
#include <sys/rsrcdbmsg.h>
char *dev_name;
int myminor_request, flags=0;
dev_t major_minor;
major_minor = rsrcdbmgr_devno_attach( dev_name, myminor_request, flags );
...
rsrcdbmgr_devno_detach( major_minor, flags );

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

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

Точка остановки потока
Да
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Предостережения:

Если приложение вызывает эту функцию, оно должно запускаться от имени пользователя root.

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

iofunc_attr_t, struct stat, rsrcdbmgr_attach(), rsrcdbmgr_devno_detach(), stat()




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