mark.zlatoust.ru Послать письмо Webmaster-у Web-Master © Бернадинер Марк 

Златоуст.Ru

 

 

TIRDWR(7)                                             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):

	     1. Все  сообщения,  имеющие область данных нулевой
		длины, удаляются из потока и вниз не  передают-
		ся.

	     2. Все  остальные  сообщения,  за исключением тех,
		которые  содержат  управляющую   область   [см.
		putmsg(2) и getmsg(2)], без изменений передают-
		ся вниз соседнему модулю потока.

	     3. Все сообщения, имеющие управляющую область, вы-
		зывают ошибку в потоке, при этом все  последую-
		щие  обращения к потоку заканчиваются неудачей,
		а  переменной  errno   присваивается   значение
		EPROTO.

	Чтение из потока 
	     Модуль tirdwr  выполняет  следующие  действия  над
	     данными, поступающими от модуля транспортного про-
	     токола:

	     1. Все  сообщения, за исключением тех, которые со-
		держат управляющую  область  [см.  putmsg(2)  и
		getmsg(2)],  без изменений передаются вверх со-
		седнему модулю потока.

	     2. Все сообщения, имеющие область  данных  нулевой
		длины, удаляются из потока и вверх не передают-
		ся.

	     3. Сообщения, имеющие управляющую область, вызыва-
		ют следующие действия:
		3.1. Сообщения,  задающие  ускоренную передачу,
		     вызывают ошибку в  потоке,  при  этом  все
		     последующие  обращения к потоку заканчива-
		     ются неудачей, а переменной errno присваи-
		     вается значение EPROTO.
		3.2. В  сообщениях,  имеющих  и управляющую об-
		     ласть, и область данных,  перед  передачей
		     сообщения наверх соседнему модулю управля-
		     ющая область удаляется.
		3.3. Сообщение от модуля транспортного протоко-
		     ла,  свидетельствующее о нормальном завер-
		     шении соединения, сгенерирует сообщение  с
		     пустой  управляющей  областью  и  областью
		     данных нулевой длины, представляющее конец
		     файла. Это сообщение посылается  пользова-
		     телю,  читающему из потока. Само сообщение
		     о нормальном завершении соединения  удаля-
		     ется из потока.
		3.4. Сообщение от модуля транспортного протоко-
		     ла, свидетельствующее об аварийном  завер-
		     шении соединения, приводят к тому, что все
		     последующие  обращения  к потоку с помощью
		     системных вызовов write(2) и putmsg(2) за-
		     канчиваются неудачей с присваиванием пере-
		     менной errno значения ENXIO.  Обращения  к
		     потоку с помощью системных вызовов read(2)
		     и getmsg(2), после того, как все имеющиеся
		     данные  будут  считаны, вернут сообщение с
		     областью данных нулевой длины, представля-
		     ющее конец файла.
		3.5. Все остальные сообщения с непустой  управ-
		     ляющей  областью вызывают ошибку в потоке,
		     при этом все последующие обращения к пото-
		     ку заканчиваются  неудачей,  а  переменной
		     errno присваивается значение EPROTO.

	Удаление модуля из потока 
	     Когда  модуль  tirdwr удаляется из потока, а также
	     при закрытии потока выполняются  следующие  дейст-
	     вия:

	     1.  Если ранее было получено сообщение, свидетель-
		 ствующее  о  нормальном завершении соединения,
		 на удаленную сторону соединения на  транспорт-
		 ном  уровне  посылается сообщение о нормальном
		 завершении соединения.

	     2.  Если ранее было получено сообщение, свидетель-
		 ствующее об аварийном  завершении  соединения,
		 не делается ничего.

	     3.  Если сообщений о завершении соединения получе-
		 но не было, на удаленную сторону соединения на
		 транспортном  уровне  посылается  сообщение об
		 аварийном завершении соединения.

	     4.  Если в потоке обнаружена ошибка и  ранее  было
		 получено  сообщение, свидетельствующее об ава-
		 рийном  завершении  соединения,  на  удаленную
		 сторону  соединения на транспортном уровне по-
		 сылается сообщение об аварийном завершении со-
		 единения.

СМ. ТАКЖЕ 
	streamio(7), timod(7).
	intro(2),   getmsg(2),  putmsg(2),  read(2),  write(2),
	intro(3) в Справочнике программиста.



 

 

Бернадинер Марк Абрамович

Мое резюме

Компьютерная страничка

Ресурсы сети

Фотоальбом

 

 

 

mark.zlatoust.ru Послать письмо Webmaster-у Web-Master © Бернадинер Марк