TIRDWR(7)
НАЗВАНИЕ
tirdwr - модуль псевдоустройства интерфейса ввода/вывода для Транспортного Интерфейса
ОПИСАНИЕ
Tirdwr - это модуль псевдоустройства, обеспечивающий
дополнительный интерфейс к транспортному протоколу, выполняющему функции Транспортного Интерфейса библиотеки
сетевых услуг. Этот дополнительный интерфейс дает возможность пользователю взаимодействовать с транспортным
протоколом с помощью системных вызовов read(2) и
write(2). Системные вызовы putmsg(2) и getmsg(2) при
этом можно использовать только для обмена данными между
пользователем и потоком.
Модуль tirdwr должен использоваться в потоке, который
завершается модулем транспортного протокола, обеспечивающим Транспортный Интерфейс [см. I_PUSH в
streamio(7)]. После того, как модуль tirdwr помещается
в поток, функции Транспортного Интерфейса становятся
недоступными, попытка обращения к какой-нибудь функции
Транспортного Интерфейса вызывает ошибку в потоке, при
этом все последующие обращения к потоку заканчиваются
неудачей, а переменной errno присваивается значение
EPROTO.
Ниже описываются действия, которые выполняет модуль
tirdwr, когда его помещают в поток [см. I_PUSH в
streamio(7)], удаляют из потока [см. I_POP в
streamio(7)], а также при прохождении через него данных.
- Помещение модуля в поток
- Когда модуль tirdwr помещается в поток, он выполняет проверку всех существующих сообщений для данного пользователя, чтобы гарантировать их полноту
и целостность. Игнорируются все сообщения, влияющие на управление процессами, например, сообщения,
генерирующие сигналы процессам, связанным с потоком. Если обнаруживается какое-нибудь другое сообщение, I_PUSH завершается неудачей, а переменной
errno присваивается значение EPROTO.
- Запись в поток
- Модуль tirdwr выполняет следующие действия над
данными, записываемыми в поток с помощью системного вызова write(2):
- Все сообщения, имеющие область данных нулевой
длины, удаляются из потока и вниз не передаются.
- Все остальные сообщения, за исключением тех,
которые содержат управляющую область [см.
putmsg(2) и getmsg(2)], без изменений передаются вниз соседнему модулю потока.
- Все сообщения, имеющие управляющую область, вызывают ошибку в потоке, при этом все последующие обращения к потоку заканчиваются неудачей,
а переменной errno присваивается значение
EPROTO.
- Чтение из потока
- Модуль tirdwr выполняет следующие действия над
данными, поступающими от модуля транспортного протокола:
- Все сообщения, за исключением тех, которые содержат управляющую область [см. putmsg(2) и
getmsg(2)], без изменений передаются вверх соседнему модулю потока.
- Все сообщения, имеющие область данных нулевой
длины, удаляются из потока и вверх не передаются.
- Сообщения, имеющие управляющую область, вызывают следующие действия:
- Сообщения, задающие ускоренную передачу,
вызывают ошибку в потоке, при этом все
последующие обращения к потоку заканчиваются неудачей, а переменной errno присваивается значение EPROTO.
- В сообщениях, имеющих и управляющую область, и область данных, перед передачей
сообщения наверх соседнему модулю управляющая область удаляется.
- Сообщение от модуля транспортного протокола, свидетельствующее о нормальном завершении соединения, сгенерирует сообщение с
пустой управляющей областью и областью
данных нулевой длины, представляющее конец
файла. Это сообщение посылается пользователю, читающему из потока. Само сообщение
о нормальном завершении соединения удаляется из потока.
- Сообщение от модуля транспортного протокола, свидетельствующее об аварийном завершении соединения, приводят к тому, что все
последующие обращения к потоку с помощью
системных вызовов write(2) и putmsg(2) заканчиваются неудачей с присваиванием переменной errno значения ENXIO. Обращения к
потоку с помощью системных вызовов read(2)
и getmsg(2), после того, как все имеющиеся
данные будут считаны, вернут сообщение с
областью данных нулевой длины, представляющее конец файла.
- Все остальные сообщения с непустой управляющей областью вызывают ошибку в потоке,
при этом все последующие обращения к потоку заканчиваются неудачей, а переменной
errno присваивается значение EPROTO.
- Удаление модуля из потока
- Когда модуль tirdwr удаляется из потока, а также
при закрытии потока выполняются следующие действия:
- Если ранее было получено сообщение, свидетельствующее о нормальном завершении соединения,
на удаленную сторону соединения на транспортном уровне посылается сообщение о нормальном
завершении соединения.
- Если ранее было получено сообщение, свидетельствующее об аварийном завершении соединения,
не делается ничего.
- Если сообщений о завершении соединения получено не было, на удаленную сторону соединения на
транспортном уровне посылается сообщение об
аварийном завершении соединения.
- Если в потоке обнаружена ошибка и ранее было
получено сообщение, свидетельствующее об аварийном завершении соединения, на удаленную
сторону соединения на транспортном уровне посылается сообщение об аварийном завершении соединения.
СМ. ТАКЖЕ
streamio(7), timod(7).
intro(2), getmsg(2), putmsg(2), read(2), write(2),
intro(3) в Справочнике программиста.
|
![](/pictures/1x1.gif) |
![](/pictures/1x1.gif) |
![](/pictures/1x1.gif) |
|
![](/pictures/1x1.gif) |
![](/pictures/1x1.gif) |
![](/pictures/1x1.gif) |
Новости мира IT:
- 25.07 - В России выросла популярность отечественных облачных хранилищ, хотя молодёжь предпочитает иностранные
- 25.07 - Microsoft добавила сгенерированные ИИ сводки в результаты поиска Bing
- 25.07 - Apple выпустила веб-версию своего картографического сервиса
- 23.07 - Google передумала отказываться от сторонних cookie в Chrome, но обещает повысить конфиденциальность
- 23.07 - Аудитория Telegram достигла 950 миллионов пользователей в месяц
- 23.07 - Alphabet провалила сделку по поглощению Wiz за $23 млрд — стартап счёл предложенные условия унизительными
- 23.07 - Intel признала вину в нестабильности Raptor Lake, но уже знает как всё исправить
- 18.07 - Еврокомиссия выяснит, не мешает ли конкурентам Samsung наличие ИИ-модели Gemini Nano в Galaxy S24
- 18.07 - Huawei будет внедрять искусственный интеллект в тяжёлое машиностроение
- 18.07 - В Китае создали сверхлёгкий дрон, который будет летать, пока светит Солнце
- 18.07 - Дефицит ИИ-чипов сохранится до 2026 года, прогнозируют в TSMC
- 18.07 - Google стала показывать меньше ответов ИИ в поиске после серии «странных» ответов
- 16.07 - Oppo и Ericsson подписали соглашение о перекрёстном лицензировании в сфере сетей 5G
- 16.07 - Акции Apple достигли исторического максимума благодаря ИИ
- 16.07 - Nvidia столкнулась с антимонопольным расследованием во Франции — компании грозит крупный штраф
- 16.07 - ИИ и глобальные амбиции: Аркадий Волож рассказал, чем займётся зарубежная часть «Яндекса» после разделения
- 16.07 - Разработку российской консоли оценили всего в 1 млрд рублей, но в целом денег понадобится куда больше
- 16.07 - Yandex закрыл сделку по продаже «Яндекса»
- 10.07 - Представлен релиз Firefox 128
- 10.07 - Доступна платформа OpenSilver 3.0, продолжающая развитие технологии Silverlight
Архив новостей
|
![](/pictures/1x1.gif) |
![](/pictures/1x1.gif) |
![](/pictures/1x1.gif) |
|
![](/pictures/1x1.gif) |
![](/pictures/1x1.gif) |
![](/pictures/1x1.gif) |
|
|
![](/pictures/1x1.gif) |
![](/pictures/1x1.gif) |
|