Префиксы Администратора ввода/вывода
При открытии файла, его составное имя сопоставляется с деревом префиксов для того, чтобы направить запрос open() к соответствующему администратору ресурсов ввода/вывода. Например, Администратор устройств (Dev) обычно регистрирует префикс /dev. Если процесс вызывает функцию open(), задавая /dev/xxx, то в результате совпадения начала составного имени с префиксом /dev, запрос open() будет направлен к администратору Dev (владельцу). Дерево префиксов может содержать частично перекрывающиеся области полномочий. В этом случае выбор осуществляется по принципу наибольшего совпадения. Например, предположим, что имеется три зарегистрированных префикса:
/ | файловая система на диске (Fsys); |
/dev | система символьных устройств (Dev); |
/dev/hd0 | дисковый том (Fsys). |
Администратор файловой системы зарегистрировал два префикса - один для смонтированной файловой системы QNX (/), а один для блок-ориентированного специального файла, который представляет целиком физический жесткий диск (/dev/hd0). Администратор устройств зарегистрировал один префикс.
Ниже в таблице приведен пример определения соответствующего администратора по принципу наибольшего совпадения.
Составные имена | Совпадает | Передается к |
/dev/con1 | /dev | Dev |
/dev/hd0 | /dev/hd0 | Fsys |
/usr/dtdodge/test | / | Fsys |
Дерево префиксов представляет собой список префиксов, разделенных двоеточиями, как показано ниже
prefix=pid,unit:prefix=pid,unit:prefix=pid,unit
pid | - это идентификатор процесса для администратора ресурсов ввода/вывода; |
unit | - это однознаковый номер, позволяющий выбирать один из нескольких возможных префиксов, которые имеет администратор. |
В предыдущем примере, если Fsys - это процесс 3, а Dev - процесс 5, то дерево системных префиксов могло бы выглядеть так
/dev/hd0=3, a:/dev=5, а:/=3,е
Если вам нужно | Воспользуйтесь |
Отобразить на экране дерево префиксов | Утилитой prefix |
Получить доступ к дереву префиксов из Си-программы | Функцией qnx_prefix_query() |