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

Программирование: Разработка и отладка программ


Способы обмена данными с SRC

Контроллер системных ресурсов (SRC) поддерживает три способа обмена данными: сигналы, сокеты и очереди сообщений IPC. Выбранный способ обмена данными определяет набор функций SRC, доступный подсистеме.

Примечание: Все подсистемы, независимо от способа обмена данными, указанного в объекте подсистемы, должны поддерживать обмен ограниченным набором сигналов. В подсистеме должна быть определена функция для обработки сигнала SIGTERM (завершение и отмена). При получении сигнала SIGTERM подсистема должна освободить все ресурсы и завершить свою работу.

Дополнительная информация о способах обмена данными с SRC приведена в следующих разделах:

В таблице Обмен данными между демоном srcmstr и подсистемами описаны все способы обмена данными и связанные с ними функции SRC.

Обмен данными между демоном srcmstr и подсистемами
Функция С помощью IPC или сокетов С помощью сигналов
запуск



подсистема SRC порождает процесс подсистемы. SRC порождает процесс подсистемы.
субсервер Подсистеме отправляется запрос через очередь сообщений IPC или сокет. Не поддерживается
обычное завершение



подсистема Подсистеме отправляется запрос через очередь сообщений IPC или сокет. Подсистеме отправляется сигнал SIGNORM.
субсервер Подсистеме отправляется запрос через очередь сообщений IPC или сокет. Не поддерживается.
принудительное завершение



подсистема Подсистеме отправляется запрос через очередь сообщений IPC или сокет. Подсистеме отправляется сигнал SIGFORCE
субсервер Подсистеме отправляется запрос через очередь сообщений IPC или сокет. Не поддерживается.
завершение и отмена



подсистема Группе процессов подсистемы отправляется сигнал SIGTERM, а затем - SIGKILL. Группе процессов подсистемы отправляется сигнал SIGTERM, а затем - SIGKILL.
получить краткую информацию о состоянии



подсистема Реализуется SRC (нет соответствующего запроса к подсистеме). Реализуется SRC (нет соответствующего запроса к подсистеме).
субсервер Подсистеме отправляется запрос через очередь сообщений IPC или сокет. Не поддерживается.
получить подробную информацию о состоянии



подсистема Подсистеме отправляется запрос через очередь сообщений IPC или сокет. Не поддерживается.
субсервер Подсистеме отправляется запрос через очередь сообщений IPC или сокет. Не поддерживается.
включить/выключить трассировку



подсистема Подсистеме отправляется запрос через очередь сообщений IPC или сокет. Не поддерживается.
субсервер Подсистеме отправляется запрос через очередь сообщений IPC или сокет. Не поддерживается.
обновить



подсистема Подсистеме отправляется запрос через очередь сообщений IPC или сокет. Не поддерживается.
субсервер Подсистеме отправляется запрос через очередь сообщений IPC или сокет. Не поддерживается.
отправка уведомления



подсистема Реализуется с помощью метода подсистемы. Реализуется с помощью метода подсистемы.

Обмен сигналами

Обмен сигналами - это основной способ обмена данными между демоном srcmstr и подсистемой. Поскольку сигналы передаются только в одном направлении, подсистемы, использующие механизм сигналов, распознают только запрос на завершение работы. Они не распознают запросы на получение подробной информации о состоянии, обновление и трассировку. Кроме того, они не распознают субсерверы.

Для работы с механизмом сигналов в подсистеме должна быть реализована процедура обработки сигналов SIGNORM и SIGFORCE, например, sigaction, sigvec или signal.

Подсистемы, использующие механизм сигналов, должны быть описаны в классе объектов подсистем SRC с помощью команды mkssys -Snf, либо функции defssys или addssys.

addssys Добавляет определение подсистемы в базу данных конфигурации SRC
defssys Инициализирует новое определение подсистемы значениями по умолчанию
mkssys Добавляет определение подсистемы в базу данных конфигурации SRC

Обмен данными через сокеты

Сокеты представляют собой другой способ обмена данными, который может применяться в подсистемах. Этот тип применяется демоном srcmstr по умолчанию. Дополнительная информация по этому вопросу приведена в разделе "Sockets Overview" книги AIX 5L Version 5.1 Communications Programming Concepts.

Демон srcmstr получает через сокеты запросы на обработку от процесса. Если вы выберете этот способ обмена данными, демон srcmstr создаст сокет подсистемы, через который она будет получать запросы демона srcmstr. Для локальных подсистем создаются сокеты UNIX (AF_UNIX). Для удаленных подсистем создаются сокеты Internet (AF_INET). Ниже описана последовательность обработки команды:

  1. Процесс команды получает команду от устройства ввода, создает запрос на обработку и отправляет дейтаграмму UDP с запросом на обработку демону srcmstr через стандартный порт SRC. Сокеты AF_INET описаны в файле /etc/services.
  2. Демон srcmstr получает запрос на обработку через стандартный порт SRC. После этого он считывает исходный адрес системы из структуры sockaddr функции socket и добавляет этот адрес и номер порта к запросу на обработку.
  3. Демон srcmstr вызывает функции srcrrqs и srcsrpy. Если он может выполнить запрос, то выполняется обработка, результат которой возвращается процессу команды. Остальные запросы передаются соответствующей подсистеме через порт, указанный в запросе на обработку.
  4. Подсистема работает с портом, выделенным ей ранее демоном srcmstr. (Порт выделяется подсистеме демоном srcmstr во время ее запуска.) Подсистема выполняет запрос на обработку и отправляет ответ процессу команды.
  5. Процесс команды получает ответ через указанный порт.

Права доступа к файлу и адреса сокетов, применяемые демоном srcmstr, хранятся во временных каталогах /dev/SRC и /dev/.SRC-unix. Информация в этих каталогах предназначена только для SRC, хотя ее можно просмотреть с помощью команды ls.

Очереди сообщений и сокеты предоставляют одни и те же функции для обмена данными с подсистемами.

Дополнительная информация по этому вопросу приведена в разделе Создание подсистем, взаимодействующих с SRC.

srcrrqs Сохраняет целевой адрес ответа подсистемы на полученный пакет. (См. также процедуру srcrrqs_r с защитой нитей)
srcsrpy Отправляет пакет с ответом подсистемы на полученный запрос.

Обмен данными с помощью очередей сообщений IPC

Очереди сообщений IPC выполняют те же функции, что и сокеты. Оба способа обмена данными позволяют работать со всеми функциями SRC.

При обмене данными через очередь сообщений IPC демон srcmstr получает запросы на обработку от процесса команды через сокет, а затем отправляет сообщение SRC для подсистемы в очередь сообщений IPC. Очередь сообщений создается при запуске подсистемы. Ниже описана последовательность действий, которая выполняется при обмене данными подсистемы с демоном srcmstr через очередь сообщений:

  1. Демон srcmstr считывает ИД очереди сообщений из объекта подсистемы SRC и отправляет сообщение подсистеме.
  2. Подсистема получает команду из очереди сообщений с помощью функции msgrcv в виде структуры subreq, содержащей запрос к подсистеме.
  3. Подсистема получает ИД тега, который указывается в ответе на сообщение, с помощью функции srcrrqs.
  4. Подсистема интерпретирует и обрабатывает полученную команду. В зависимости от команды, подсистема размещает ответ в структуре данных svrreply или statcode. Дополнительная информация об этих структурах приведена в файле /usr/include/spc.h.
  5. Подсистема отправляет ответ процессу команды с помощью функции srcsrpy.

Дополнительная информация об этом способе обмена данными приведена в разделе "Message Queue Kernel Services" книги AIX 5L Version 5.1 Kernel Extensions and Device Support Programming Concepts. Дальнейшие действия, которые необходимо выполнить для настройки обмена данными с демоном srcmstr, описаны в разделе Создание подсистем, взаимодействующих с SRC.

Связанная информация

Глава 26, Контроллер системных ресурсов

Объекты SRC

Создание подсистем, взаимодействующих с SRC

Определение подсистемы в SRC

Файл spc.h

Функции msgrcv, signal, socket, srcrrqs, srcsrpy


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