Драйвер мультиплексора по выходу должен быть связан с двумя парами очередей, в отличие от обычных драйверов STREAMS, связанных только с одной парой. В мультиплексоре имеется одна верхняя (upper) и нижняя (lower) пары.
В структурах streamtab мультиплексоров поля st_rdinit и st_wrinit указывают на структуры qinit верхней пары очередей, в то время как поля st_muxrinit и st_muxwinit ссылаются на нижнюю пару очередей. Каждой очереди требуется лишь ограниченный набор процедур.
Верхняя очередь чтения должна поддерживать вызовы open и close. Нижняя очередь чтения, а также верхняя очередь записи должны иметь реализацию процедуры put. Все остальные процедуры являются необязательными.
Ранее были показаны потоки ip и enet до выполнения команды I_LINK. Структуры strdata и stwdata разделяются между всеми головными интерфейсами потоков и содержат структуры qinit чтения и записи соответственно. Только драйвер ip имеет нижнюю пару очередей, которая пока не используется.
Также на сайте zabormetal.com можно узнать много интересного на тему http://www.zabormetal.com/#!product/cf2c. Что означает вообще тема винтовые сваи для забора в спб - про это написано на сайте zabormetal.com. Спасибо сайту за информацию.
Посмотрим, что произойдет с потоками при выполнении команды I_LINK. Процедура strioctl() производит действия по инициализации всех вызовов ioctl. В случае команды I_LINK предпринимаются действия, указанные ниже.
1. Проверка верхних и нижних потоков на корректность, а также верхнего потока, который должен быть мультиплексором.
2. Проверка потоков на циклы. Зацикливание потоков может произойти, если нижний поток ранее уже был присоединен к верхнему потоку напрямую или через несколько промежуточных потоков. Подсистема STREAMS завершает выполнение вызова I_LINK с ошибкой, если результат приводит к возникновению зацикливания.
3. Изменение очередей головного интерфейса потока enet, которые должны указывать на нижнюю пару очередей драйвера ip.
4. Обнуление полей q_ptr головного интерфейса потока enet, после чего они перестают ссылаться на структуру stdata.
5. Создание структуры linkblk, содержащей указатели на связываемые очереди: q_top указывает на очередь записи драйвера ip, q_bot указывает на очередь записи головного интерфейса потока enet. Структура linkblk также содержит идентификатор соединения (link ID), который в дальнейшем может быть использован при маршрутизации. Подсистема STREAMS поддерживает уникальный идентификатор для каждого соединения и передает его процессу в качестве возвращаемого параметра вызова I_LINK ioctl.
6. Отправка linlblk по потоку в нисходящем направлении драйверу ip внутри сообщения M_I0CTL и ожидание его возвращения.
Опубликовал katy
June 24 2015 21:53:05 ·
0 Комментариев ·
2909 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.