Доступ к потоку
Доступ к потоку
Как и для обычных драйверов устройств, рассмотренных ранее, прежде чем процесс сможет получить доступ к драйверу STREAMS, необходимо встроить драйвер в ядро системы и создать специальный файл устройства — файловый интерфейс доступа. Независимо от того, как именно осуществляется встраивание (статически с перекомпиляцией ядра, или динамически), для этого используются три структуры данных, определенных для любого драйвера или модуля STREAMS: module_info, qinit и streamtab. Связь между ними представлена на рис. 5.21.
Рис. 5.21. Конфигурационные данные драйвера (модуля) STREAMS
Структура streamtab используется ядром для доступа к точкам входа драйвера или модуля — к процедурам его очередей xxopen(), xxclose(), xxput() и xxservice(). Для этого streamtab содержит два указателя на структуры qinit, соответственно, для обработки сообщений очереди чтения и записи. Два других указателя, также на структуры qinit, используются только для мультиплексоров для обработки команды I_LINK, используемой при конфигурации мультиплексированного потока. Каждая структура qinit определяет процедуры, необходимые для обработки сообщений вверх и вниз по потоку (очередей чтения и записи). Функции xxopen() и xxclose() являются общими для всего модуля и определены только для очереди чтения. Все очереди модуля имеют ассоциированную с ними процедуру xxput(), в то время как процедура xxservice() определяется только для очередей, реализующих управление передачей. Каждая структура qinit также имеет указатель на структуру module_info, которая обычно определяется для всего модуля и хранит базовые значения таких параметров, как максимальный и минимальный размеры передаваемых пакетов данных (mi_maxpsz, mi_minpsz), значения ватерлиний (mi_hiwat, mi_lowait), а также идентификатор и имя драйвера (модуля) (mi_idnum, mi_idname).
Доступ к драйверам STREAMS осуществляется с помощью коммутатора символьных устройств — таблицы cdevsw[]. Каждая запись этой таблицы имеет поле d_str, которое равно NULL для обычных символьных устройств. Для драйверов STREAMS это поле хранит указатель на структуру streamtab драйвера. Таким образом, через коммутатор устройств ядро имеет доступ к структуре streamtab драйвера, а значит и к его точкам входа. Для обеспечения доступа к драйверу из прикладного процесса необходимо создать файловый интерфейс — т.е. специальный файл символьного устройства, старший номер которого был бы равен номеру элемента cdevsw[], адресующего точки входа драйвера.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Передача параметров потоку
Передача параметров потоку Зачастую каждый поток из группы последовательно создаваемых потоков, выполняющих одну и ту же функцию, нужно запускать со своим индивидуальным блоком данных (параметром потока). Для этого предназначен 4-й параметр вызова pthread_create() — указатель
6.9 Доступ к среде
0
Коммутируемый доступ
Коммутируемый доступ Коммутируемый доступ в Интернет (dial-up) – самый распространенный вследствие своей невысокой стоимости. Для его формирования необходимо наличие телефонной линии (стационарного телефонного номера) и модема.Модем следует выбирать исходя из качества
6.2.4. Общий доступ
6.2.4. Общий доступ Чаще всего, на сервере необходима директория, через которую любой пользователь сможет обмениваться файлами с другими участниками сети. Для настройки такой папки используется секция [tmp]:;[tmp]; comment = Temporary file space; path = /tmp; read only = no; public = yesПо умолчанию секция
10.3.1. Доступ
10.3.1. Доступ Такие директивы определяют основные права доступа к FTP-серверу. Давайте рассмотрим основные из них:? class имя type адреса — позволяет организовать классы пользователей по их типу и адресу. В нашем конфигурационном файле указана следующая строка:class all anonymous,guest,real
10.3.3. Доступ по операциям
10.3.3. Доступ по операциям Помимо этого, в файле ftpaccess может быть описание основных операций и прав доступа к ним. В общем виде это выглядит следующим образом:Действие yes|no пользовательВ качестве действия можно указать одно из следующих значений: chmod, delete, overwrite, rename или umask.
Доступ к GUI
Доступ к GUI После завершения установки и перезагрузки компьютера можно переходить к GUI Asterisk. URL, используемый для доступа к GUI Asterisk, - это IP-адрес или имя хоста, которое выводится на экран после перезагрузки компьютера. Введите этот IP-адрес в адресной строке броузера. С
Удаленный доступ
Удаленный доступ Удаленным доступом (DialUP) называют получение доступа к разрешенным папкам компьютера с помощью модема или виртуального частного соединения (VPN). Поскольку VPN является не таким уж частым гостем на домашних компьютерах пользователей, то в данной главе будет
Автоматический доступ
Автоматический доступ Во многих больших системах UNIX вы только компилируете программы, а доступ к более общим библиотечным функциям выполняется автоматически.
13.1.3. Доступ к членам
13.1.3. Доступ к членам Часто бывает так, что внутреннее представление типа класса изменяется в последующих версиях программы. Допустим, опрос пользователей нашего класса Screen показал, что для его объектов всегда задается размер экрана 80 ? 24. В таком случае было бы желательно
Доступ к сети
Доступ к сети Сервер Firebird, запущенный на любой платформе, принимает TCP/IP-подключения клиентов с любой клиентской платформы, которая может выполнять Firebird API.Клиенты не могут подключиться к серверу Firebird через какую-нибудь файловую систему коллективного доступа (NFS,
Локальный доступ
Локальный доступ Хотя Firebird разработан, чтобы быть сервером базы данных для удаленных клиентов, он предоставляет множество средств локального доступа.Firebird поддерживает протокол Microsoft WNet Named Pipes для серверов Windows NT/2000, XP и клиентов Windows. Имя канала по умолчанию interbas. Windows 9х и
Локальный доступ
Локальный доступ Классический сервер позволяет процессам приложений, которые выполняются на той же машине, где находятся сервер и базы данных, выполнять прямые операции ввода/вывода с базой данных.За исключением встроенного сервера Суперсервер требует, чтобы