[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]

Руководство по управлению системой: Сети и средства связи


Специальные службы ядра GDLC

Общий интерфейс управления передачей данных (GDLC) предоставляет пользователю уровня ядра специальные возможности. Тем не менее, внутри ядра должна существовать надежная среда. Вместо того чтобы диспетчер устройств DLC копировал данные асинхронных событий в пользовательское пространство, пользователь уровня ядра должен задать указатели на специальные подпрограммы, называемые функциями-обработчиками. Функции-обработчики вызываются DLC во время выполнения. Этим обеспечивается максимальная производительность взаимодействия пользователя уровня ядра и слоев DLC. Каждый пользователь уровня ядра должен ограничить число функций-обработчиков минимальной длиной пути и использовать схему с буфером связи (mbuf).

Функция-обработчик не может обращаться непосредственно к другой точке входа DLC, так как при непосредственном обращении происходит блокировка, приводящая к полному останову. Это правило не работает, если пользователь уровня ядра обращается к точке входа dlcwritex при обработке одной из четырех функций приема данных. Обращение к точке входа dlcwritex дает возможность получить ответ немедленно, без дополнительного переключения заданий. Когда пользователь вызывает операцию записи, проверка идентификатора процесса в диспетчере устройств DLC требует специальной логики. Если это процесс, DLC, и возможности внутренних средств буферизации DLC исчерпаны, то вызывающий процесс (DLC) не переводится в состояние ожидания, а операция записи отклоняется с кодом ошибки EAGAIN. Затем функция приема данных пользовательской подпрограммы может возвратить DLC специальное уведомление о повторении попытки приема данных буфера.

Предусмотрены следующие пользовательские функции-обработчики:

Подпрограмма Данные дейтаграммы приняты Вызывается при приеме пакета дейтаграмм для пользователя уровня ядра.
Подпрограмма Исключительная ситуация Вызывается при возникновении асинхронного события для уведомления пользователя, например: SAP закрыта или Связь со станцией установлена.
Подпрограмма Принят информационный кадр Вызывается при получении обычного пакета упорядоченных данных для пользователя уровня ядра.
Подпрограмма Приняты сетевые данные Вызывается при приеме данных со специальной информацией о сети для пользователя уровня ядра.
Подпрограмма Приняты данные XID Вызывается при приеме пакета идентификации обмена (XID) для пользователя уровня ядра.

Пользователь уровня ядра не может обратиться к точкам входа dlcread и dlcselect для DLC, так как обращение к асинхронным функциональным точкам входа производится непосредственно из диспетчера устройств DLC. Как правило, постановка этих событий в очередь производится пользовательской функцией-обработчиком. Но если пользователь уровня ядра не может обработать принятый пакет, то диспетчер устройств DLC может заблокировать буфер приема и перейти в один из следующих режимов класса user-busy:

Режим Занято с пользовательским сбросом (только для информационных кадров)

Если пользователь уровня ядра не может обработать принятый информационный кадр (например, из-за блокировки очереди), то возвращается код DLC_FUNC_BUSY, и DLC блокирует указатель на буфер и переходит в режим local-busy для прекращения передачи информационных кадров удаленной станцией. Для того чтобы сбросить режим local-busy и возобновить прием информационных кадров, пользователь уровня ядра должен вызвать функцию Выйти из режима local-busy. Можно прекратить передачу только обычных упорядоченных информационных кадров. Режим local-busy не оказывает влияния на данные XID, дейтаграммы и сетевые данные.

Режим Занято со сбросом по таймеру (для всех типов кадров)

Если пользователь уровня ядра не может обработать принятый пакет и необходимо, чтобы DLC заблокировал буфер приема на короткий промежуток времени, а затем повторил вызов пользовательской функции приема, то DLC возвращается код DLC_FUNC_RETRY. Если принятый пакет - это упорядоченный информационный кадр, то на этот промежуток времени станция переходит в режим local-busy. В любом случае запускается таймер; по истечении времени работы таймера обращение к функциональной точке входа для приема данных повторяется.


[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]