ChannelDestroy(), ChannelDestroy_r()

Уничтожить канал связи

Прототип:

#include <sys/neutrino.h>
int ChannelDestroy( int chid );
int ChannelDestroy_r( int chid );

Аргументы:

chid
Идентификатор канала, возвращаемый ChannelCreate(), который нужно уничтожить.

Библиотека:

libc

Описание:

Данные вызовы ядра уничтожают канал, определяемый идентификатором, передаваемым в аргумент chid. Если канал разрушен, любые попытки получить сообщение или импульс из канала завершается ошибкой. Любой поток, заблокированный на канале во время вызова MsgReceivev() или MsgSendv(), разблокируется и завершится с ошибкой.

Функции ChannelDestroy() и ChannelDestroy_r() идентичны за исключением способа оповещения об ошибках.

Когда канал разрушается, все идентификаторы соединений сервера становятся недействительными. Соединения клиентов помечаются как некорректные, но продолжают существовать до тех пор, пока клиент не удалит их, вызвав ConnectDetach(). Попытка клиента использовать одно из некорректных соединений с помощью MsgSendv() или MsgSendPulse() завершится с ошибкой.

Сервер обычно разрушает свои каналы перед тем, как завершает работу. Если это не удается, ядро разрушает их автоматически, когда процесс завершается.

Состояния блокировки

Данные вызовы не блокируются.

Возвращаемое значение:

ChannelDestroy()
Если возникла ошибка, функция возвращает -1, код ошибки записывается в errno. Любое другое возвращенное значение считается успешным завершением.
ChannelDestroy_r()
EOK возвращается при успешном завершении. Функция НЕ устанавливает errno. При возникновении ошибки функция возвращает один из представленных ниже кодов.

Коды ошибок:

EINVAL
Канал, определенный chid, не существует.

Классификация:

ЗОСРВ «Нейтрино»

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

ChannelCreate(), MsgReceivev()




Предыдущий раздел: Описание API системной библиотеки