Книга: Введение в QNX/Neutrino 2. Руководство по программированию приложений реального времени в QNX Realtime Platform
Реально все это за вас делает библиотека
Реально все это за вас делает библиотека
Как вариант начального знакомства с библиотекой, давайте посмотрим, что делают вызовы, использованные в администраторе ресурсов /dev/null
:
dispatch _create()
Создает структуру диспетчеризации; она будет использоваться для блокирования по приему сообщения.
iofunc_attr_init()
Инициализирует используемую устройством атрибутную запись. Мы обсудим атрибутные записи в подробностях несколько позже, а вкратце так: атрибутная запись содержит информацию об устройстве, и на каждое имя устройства имеется по одной атрибутной записи.
iofunc_func_init()
Инициализирует две структуры данных, cfuncs и ifuncs, которые содержат соответственно указатели на функции установления соединения и функции ввода/вывода. Это, пожалуй, самый «магический» вызов, поскольку именно он назначает подпрограммы обработки сообщений, привязывая их к структурам данных. Заметьте, что никакого кода обработки сообщений установления соединения или сообщений ввода/вывода, генерируемых функциями read(), stat() или им подобными, в администраторе нет. Дело в том, что библиотека содержит для всех сообщений готовые POSIX-обработчики по умолчанию, и как раз функция iofunc_func_init()-то и привязывает их к двум передаваемым ей таблицам.
resmgr_attach()
Создает канал, который администратор ресурса будет использовать для приема сообщений, и говорит администратору процессов, что мы намерены отвечать за «/dev/null
». Параметров тут много, но к этой головной боли мы вернемся несколько позже. Сейчас же важно отметить, что именно здесь связываются воедино дескриптор диспетчера (dpp), имя пути (строка «/dev/null
») и обработчики функций установления соединения (cfuncs) и ввода/вывода (ifuncs).
resmgr_context_alloc()
Выделяет внутренний контекстный блок администратора ресурса. Мы рассмотрим этот блок в подробностях несколько позже, а вкратце — он содержит информацию, относящуюся к обрабатываемому сообщению.
resmgr_block()
Это блокирующий вызов администратора ресурса — функция, с помощью которой мы ожидаем сообщение от клиента.
resmgr_handler()
После того как сообщение от клиента получено, для его обработки вызывается эта функция.
- Пять умнейших стерв – это много
- Доверие – это гарантия от неприятностей
- Профессиональная терминология не всегда уместна
- 2. Визуальный язык знают все Жест с ручкой в руках
- Домашняя мастерская: вы всегда на работе
- Масса, материя и реальность
- Программируя Вселенную. Квантовый компьютер и будущее науки
- Является ли выбранный партнер наилучшим для вас?
- Часть IV Чтобы вас не рассекретили…
- Часть I Собственно компьютер и периферия Ху из ху и как все это совмещается и работает
- Даем опровержение: «Это вообще не наша !!!опа»
- 1.3.1. Прокси-сервер – что это?