НАЗВАНИЕ
mnt - устройство монтирования, обеспечивает доступ к Styx-серверам
ВЫЗОВ
#M
ОПИСАНИЕ
Драйвер устройства монтирования используется функцией системного модуля Sys->mount (но не Sys->bind; см. sys-bind(2)), чтобы связать пространство имен какого-либо процесса с сервисом Styx-сервера посредством коммуникационного канала. После монтирования, операции с файлами в данном разделе пространства имен будут автоматически конвертироваться драйвером в корректные сигналы серверу, в ответ на которые Styx (протокол сервера) вернет результаты вызова системных функций (успех или ошика).
Естесственно, монтирование осуществляется после авторизации на сервере, так как само устройство этим не занимается; см. security-intro(2) про авторизацию и механизмы безопасности, реализованные в `ready made' формате в Inferno (впрочем, допустима любая другая схема общения между клиентом и сервером). По сути, вызов системной функции mount формирует запрос серверу в виде attach(5)-сигнала с целью идентификации пользователя для текущего `соединения`. Соединения пользователей монтируются по отдельности; таким образом, драйвер монтирования осуществляет мультиплексирование доступа различных пользователей и их приложений к серверу.
Файл-ориентированные вызовы системных функций конвертируются ядром в сигналы протокола Styx. В самом ядре, Styx представлен в виде обращений к драйверам различных устройств ядра, как описано в intro(10) и dev(10.2). Драйвер устройства монтирования трансформирует такие обращения в удаленные вызовы системных функций, которые отсылает протоколу в виде запросов посредством канала, отвечающего данному `соединению`. Каждый такой запрос записывается в канал сервера, откуда считывается протоколом, и в ответ формируется сигнал, содержащий результаты вызова системных функций.
В результате вызова системных функций sys-read(2) или Sys->write может быть сформировано более одного сигнала, если достигнуто ограничение на максимальный размер файла для данного типа сообщений протокола Styx. Системная функция в этом случае возвращает либо указанное количество байт, которые необходимо передать, либо формирует укороченный сигнал.
Строка вида `#M` не является корректным именем файла, поэтому в таком виде устройство может быть вызвано только ядром.
Смотри также
ИСХОДНЫЙ КОД
/emu/port/devmnt.c
/os/port/devmnt.c
ОШИБКИ
В процессе монтирования слишком длинный сигнал может быть разбит на две части.