Роб Кёртен - Введение в QNX/Neutrino 2. Руководство по программированию приложений реального времени в QNX Realtime Platform
- Название:Введение в QNX/Neutrino 2. Руководство по программированию приложений реального времени в QNX Realtime Platform
- Автор:
- Жанр:
- Издательство:Петрополис
- Год:2001
- Город:Санкт-Петербург
- ISBN:5-94656-025-9
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Роб Кёртен - Введение в QNX/Neutrino 2. Руководство по программированию приложений реального времени в QNX Realtime Platform краткое содержание
Книга "Введение в QNX/Neutrino 2» откроет перед вами в мельчайших подробностях все секреты ОСРВ нового поколения от компании QNX Software Systems Ltd (QSSL) — QNX/Neutrino 2. Книга написана в непринужденной манере, легким для чтения и понимания стилем, и поможет любому, от начинающих программистов до опытных системотехников, получить необходимые начальные знания для проектирования надежных систем реального времени, от встраиваемых управляющих приложений до распределенных сетевых вычислительных систем
В книге подробно описаны основные составляющие ОС QNX/Neutrino и их взаимосвязи. В частности, уделено особое внимание следующим темам:
• обмен сообщениями: принципы функционирования и основы применения;
• процессы и потоки: базовые концепции, предостережения и рекомендации;
• таймеры: организация периодических событий в программах;
• администраторы ресурсов: все, что относится к программированию драйверов устройств;
• прерывания: рекомендации по эффективной обработке.
В книге представлено множество проверенных примеров кода, подробных разъяснений и рисунков, которые помогут вам детально вникнуть в и излагаемый материал. Примеры кода и обновления к ним также можно найти на веб-сайте автора данной книги, www.parse.com.
Введение в QNX/Neutrino 2. Руководство по программированию приложений реального времени в QNX Realtime Platform - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Отметим, что эта функция будет вызываться только в том случае, если вы согласились поддерживать функцию sync
, установив соответствующий флаг в записи точки монтирования.
Возвращает: Код завершения, при помощи вспомогательного макроса _RESMGR_STATUS .
int io_umount(resmgr_context_t * ctp , void * msg ,
RESMGR_OCB_T * ocb )
Данная функция зарезервирована QSSL для будущего использования. Вам следует инициализировать таблицу функций ввода/вывода, используя iofunc_func_init() , и не изменять данную точку входа.
int io_unblock(resmgr_context_t * ctp , io_pulse_t * msg ,
RESMGR_HANDLE_T * handle , void* reserved )
Классификация: Функция установления соединения (синтезируется ядром и библиотекой)
Обработчик по умолчанию: Нет
Вспомогательные функции: iofunc_unblock()
Клиентская функция: Нет (вызывается ядром вследствие сигнала или тайм-аута)
Сообщения: Нет (синтезируется библиотекой)
Структура данных: (см. вариант io_unblock() для ввода/вывода, ниже)
Описание: Это версия разблокирующего вызова в форме сообщения установления соединения, синтезируемая библиотекой в ответ на импульс от ядра, возникший в результате желания клиента разблокироваться на этапе установления соединения. См. вариант этой функции для ввода/вывода ниже.
Возвращает: Код завершения, при помощи вспомогательного макроса _RESMGR_STATUS .
См. подробное обсуждение стратегий разблокирования в главе «Обмен сообщениями», параграф «Применение флага _NTO_MI_UNBLOCK_REQ».
int io_unblock(resmgr_context_t * ctp , io_pulse_t * msg ,
RESMGR_OCB_T * ocb )
Классификация: Функция ввода/вывода (синтезируется ядром и библиотекой)
Обработчик по умолчанию: iofunc_unblock_default()
Вспомогательные функции: iofunc_unblock()
Клиентская функция: Нет (реакция ядра на сигнал или тайм-аут)
Сообщения: Нет (синтезируется библиотекой)
Структура данных: указательна структуру, содержащую прерываемое сообщение
Описание: Это версия разблокирующего вызова для сообщения ввода/вывода, синтезируемая библиотекой в результате импульса от ядра, возникшего вследствие попытки клиента разблокироваться на этапе ввода/вывода. Обработчик io_unblock() для фазы установления соединения почти аналогичен (см. предыдущий параграф).
Общим для обеих обработчиков разблокировки (как для функций установления соединения, так и для функций ввода/вывода) является желание клиента разблокироваться с разрешения администратора ресурсов. Администратор ресурсов обязан ответить на клиентское сообщение, чтобы разблокировать клиента. (Мы это обсуждали в главе «Обмен сообщениями», когда говорили о флагах функции ChannelCreate() — в частности, о флаге _NTO_CHF_UNBLOCK).
Возвращает: Код завершения, при помощи вспомогательного макроса _RESMGR_STATUS .
Подробное обсуждение стратегий разблокирования см. в разделе «Применение флага _NTO_MI_UNBLOCK_REQ» в главе «Обмен сообщениями».
int io_unlink(resmgr_context_t * ctp , io_unlink_t * msg ,
RESMGR_HANDLE_T* handle , void* reserved )
Классификация: Функция установления соединения
Обработчик по умолчанию: Нет
Вспомогательные функции: iofunc_unlink()
Клиентская функция: unlink()
Сообщение: _IO_CONNECT, подтип _IO_CONNECT_UNLINK
Структура данных:
struct _io_connect {
// Внутренние поля (как описано выше)
uint16_t path_len ;
uint8_t extra_type ;
uint16_t extra_len ;
char path [1];
};
struct _io_connect_link_reply {
uint32_t reserved1 [2];
uint8_t eflag ;
uint8_t reserved2 [3];
uint32_t umask ;
uint16_t nentries ;
uint16_t path_len ;
};
typedef union {
struct _io_connect connect ;
struct _io_connect_link_reply link_reply ;
} io_unlink_t ;
Описание: Отвечает за уничтожение связей (unlinking) файла, имя пути которого передается в поле path структуры входящего сообщения.
Возвращает: Состояние по применению вспомогательного макроса _RESMGR_STATUS .
int io_unlock_ocb(resmgr_context_t * ctp , void * reserved ,
RESMGR_OCB_T * ocb )
Классификация: Функция ввода/вывода (синтезируется библиотекой)
Обработчик по умолчанию: iofunc_unlock_ocb_default()
Вспомогательные функции: Нет
Клиентская функция: Все
Сообщения: Нет (синтезируется библиотекой)
Структура данных: Нет
Описание: Действует противоположно вышеописанной функции io_lock_ocb() , т.е. отвечает за разблокирование атрибутной записи, на которую указывает OCB. Эта операция освобождает атрибутную запись, чтобы другие администратора ресурсов могли с ней работать. Подробности см. выше в разделе «Составные сообщения».
Возвращает: Код завершения, при помощи вспомогательного макроса _RESMGR_STATUS .
int io_utime(resmgr_context_t * ctp , io_utime_t * msg ,
RESMGR_OCB_T * ocb )
Классификация: Функция ввода/вывода
Обработчик по умолчанию: iofunc_utime_default()
Вспомогательные функции: iofunc_utime()
Клиентская функция: utime()
Сообщения: _IO_UTIME
Структура данных:
struct _io_utime {
uint16_t type ;
uint16_t combine_len ;
int32_t cur_flag ;
struct utimbuf times ;
};
typedef union {
struct _io_utime i ;
} io_utime_t;
Описание: Устанавливает времена последнего доступа и модификации либо в «текущий момент» (если они равны нулю), либо в заданные значения. Заметьте, что согласно правилам POSIX этот обработчик сообщения может быть необходим для модификации флагов IOFUNC_ATTR_*
в атрибутной записи. Вам почти никогда не придется самостоятельно использовать этот обработчик; вместо этого вы будете использовать вспомогательную функцию POSIX-уровня.
Возвращает: Код завершения, при помощи вспомогательного макроса _RESMGR_STATUS .
int io_write(resmgr_context_t * ctp , io_write_t * msg ,
RESMGR_OCB_T * ocb )
Классификация: Функция ввода/вывода
Обработчик по умолчанию: iofunc_write_default()
Вспомогательные функции: iofunc_write_verify()
Читать дальшеИнтервал:
Закладка: