Роб Кёртен - Введение в QNX/Neutrino 2. Руководство по программированию приложений реального времени в QNX Realtime Platform

Тут можно читать онлайн Роб Кёртен - Введение в QNX/Neutrino 2. Руководство по программированию приложений реального времени в QNX Realtime Platform - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-osnet, издательство Петрополис, год 2001. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Введение в QNX/Neutrino 2. Руководство по программированию приложений реального времени в QNX Realtime Platform
  • Автор:
  • Жанр:
  • Издательство:
    Петрополис
  • Год:
    2001
  • Город:
    Санкт-Петербург
  • ISBN:
    5-94656-025-9
  • Рейтинг:
    3.67/5. Голосов: 91
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Роб Кёртен - Введение в QNX/Neutrino 2. Руководство по программированию приложений реального времени в QNX Realtime Platform краткое содержание

Введение в QNX/Neutrino 2. Руководство по программированию приложений реального времени в QNX Realtime Platform - описание и краткое содержание, автор Роб Кёртен, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Книга "Введение в QNX/Neutrino 2» откроет перед вами в мельчайших подробностях все секреты ОСРВ нового поколения от компании QNX Software Systems Ltd (QSSL) — QNX/Neutrino 2. Книга написана в непринужденной манере, легким для чтения и понимания стилем, и поможет любому, от начинающих программистов до опытных системотехников, получить необходимые начальные знания для проектирования надежных систем реального времени, от встраиваемых управляющих приложений до распределенных сетевых вычислительных систем

В книге подробно описаны основные составляющие ОС QNX/Neutrino и их взаимосвязи. В частности, уделено особое внимание следующим темам:

• обмен сообщениями: принципы функционирования и основы применения;

• процессы и потоки: базовые концепции, предостережения и рекомендации;

• таймеры: организация периодических событий в программах;

• администраторы ресурсов: все, что относится к программированию драйверов устройств;

• прерывания: рекомендации по эффективной обработке.

В книге представлено множество проверенных примеров кода, подробных разъяснений и рисунков, которые помогут вам детально вникнуть в и излагаемый материал. Примеры кода и обновления к ним также можно найти на веб-сайте автора данной книги, www.parse.com.

Введение в QNX/Neutrino 2. Руководство по программированию приложений реального времени в QNX Realtime Platform - читать онлайн бесплатно полную версию (весь текст целиком)

Введение в QNX/Neutrino 2. Руководство по программированию приложений реального времени в QNX Realtime Platform - читать книгу онлайн бесплатно, автор Роб Кёртен
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Чтобы не путать точки входа в функции-обработчики сообщений с вызовами клиентской Си-библиотеки (например, open() ), к именам всех приведенных здесь функций добавлен префикс « io_ ». Например, обработчик функции установления соединения open() будет называться io_open() .

io_chmod()

int io_chmod(resmgr_context_t * ctp , io_chmod_t * msg ,

RESMGR_OCB_T * ocb )

Классификация: Функция ввода/вывода

Обработчик по умолчанию: iofunc_chmod_default()

Вспомогательные функции: iofunc_chmod()

Клиентская функция: chmod() , fchmod()

Сообщения: _IO_CHMOD

Структура данных:

struct _io_chmod {

uint16_t type ;

uint16_t combine_len ;

mode_t mode ;

};

typedef union {

struct _io_chmod i ;

} io_chmod_t;

Описание: Отвечает за изменение режима доступа к ресурсу, указанному в переданном ей параметре ocb , в значение, содержащееся в поле сообщения mode.

Возвращает: Код завершения, при помощи вспомогательного макроса _RESMGR_STATUS .

io_chown()

int io_chown(resmgr_context_t * ctp , io_chown_t * msg ,

RESMGR_OCB_T * ocb )

Классификация: Функция ввода/вывода

Обработчик по умолчанию: iofunc_chown_default()

Вспомогательные функции: iofunc_chown()

Клиентская функция: chown() , fchown()

Сообщения: _IO_CHOWN

Структура данных:

struct _io_chown {

uint16_t type ;

uint16_t combine_len ;

int32_t gid ;

int32_t uid ;

};

typedef union {

struct _io_chown i ;

} io_chown_t;

Описание: Ответственна за изменение полей идентификатора пользователя и группы для ресурса, указанному в переданном ей параметре ocb, соответственно в значения uid и gid . Отметим, что чтобы узнать, позволяет ли данная файловая система выполнять chown() кому-либо, кроме суперпользователя (root), надо проверить запись точки монтирования на предмет флага IOFUNC_PC_CHOWN_RESTRICTED, а также поле flags в OCB.

Возвращает: Код завершения, при помощи вспомогательного макроса _RESMGR_STATUS .

io_close_dup()

int io_close_dup(resmgr_context_t * ctp , io_close_t * msg ,

RESMGR_OCB_T * ocb )

Классификация: Функция ввода/вывода

Обработчик по умолчанию: iofunc_close_dup_default()

Вспомогательные функции: iofunc_close_dup()

Клиентская функция. close() , fclose()

Сообщения: _IO_CLOSE_DUP

Структура данных:

struct _io_close {

uint16_t type ;

uint16_t combine_len ;

};

typedef union {

struct _io_close i ;

} io_close_t;

Описание: Это реальный обработчик клиентских вызовов close() и fclose() . Отметим, что вам почти никогда не придется переназначать эту функцию; оставляйте в таблице функций ввода/вывода значение iofunc_close_dup_default() . Причиной этому служит то, что базовый уровень библиотеки отслеживает число сообщений open() , dup() и close() , выданных по каждому OCB, и синтезирует вызов io_close_ocb() (см. ниже) после получения для данного OCB последнего сообщения close() . Отметим, что идентификаторы отправителей, расположенные в ctp->rcvid , могут и не совпадать с переданными функции io_open() ; однако, совпадение по меньшей мере одного идентификатора гарантируется. «Лишние» идентификаторы отправителей являются результатом (возможно, внутренних) вызовов типа dup() .

Возвращает: Код завершения, при помощи вспомогательного макроса _RESMGR_STATUS .

io_close_ocb()

int io_close_ocb(resmgr_context_t * ctp , void* reserved ,

RESMGR_OCB_T * ocb )

Классификация: Функция ввода/вывода (синтезируется библиотекой)

Обработчик по умолчанию: iofunc_close_default()

Вспомогательные функции: Нет

Клиентская функция: Нет (синтезируется библиотекой)

Сообщения: Нет (синтезируется библиотекой)

Структура данных:

// Синтезируется библиотекой

struct _io_close {

uint16_t type ;

uint16_t combine_len ;

};

typedef union {

struct _io_close i ;

} io_close_t;

Описание: Это функция, которая синтезируется базовым уровнем библиотеки, когда для некоего OCB получено последнее сообщение close() . Это то самое место, где вам следует «подчистить» все перед уничтожением OCB. Отметим, что идентификатор отправителя в ctp->rcvid есть нуль (0), потому что данная функция синтезируется библиотекой и не обязательно соответствует какому-либо конкретному сообщению.

Возвращает: Код завершения, при помощи вспомогательного макроса _RESMGR_STATUS .

io_devctl()

int io_devctl(resmgr_context_t * ctp , io_devctl_t * msg ,

RESMGR_OCB_T * ocb )

Классификация: Функция ввода/вывода

Обработчик по умолчанию: iofunc_devctl_default()

Вспомогательные функции: iofunc_devctl()

Клиентская функция: devctl() , ioctl()

Сообщения: _IO_DEVCTL

Структура данных:

struct _io_devctl {

uint16_t type ;

uint16_t combine_len ;

int32_t dcmd ;

int32_t nbytes ;

int32_t zero ;

};

struct _io_devctl_reply {

uint32_t zero ;

int32_t ret_val ;

int32_t nbytes ;

int32_t zero2 ;

};

typedef union {

struct _io_devctl i ;

struct _io_devctl_reply o ;

} io_devctl_t;

Описание: Выполняет над устройством операцию ввода/вывода, переданную от клиентской функции devctl() в параметре dcmd . Клиент кодирует направление передачи данных двумя старшими разрядами dcmd , указывая этим, как функция devctl() должна передавать данные (поле «to» соответствует биту _POSIX_DEVDIR_TO, поле «from» — биту _POSIX_DEVDIR_FROM):

Поле «to» Поле «from» Значение
0 0 Передачи данных нет
0 1 Передача от драйвера клиенту
1 0 Передача от клиента драйверу
1 1 Двунаправленная передача

В случае, когда передачи данных нет, предполагается, что драйвер просто выполняет команду, заданную в dcmd . В случае передачи данных предполагается, что драйвер передает данные клиенту и/или обратно, используя вспомогательные функции resmgr_msgreadv() и resmgr_msgwritev() . Клиент указывает размер передачи в поле nbytes ; драйвер должен установить число передаваемых байт в поле nbytes исходящей структуры.

Отметим, что структуры данных, предназначенные для ввода и вывода, дополнены нулями, чтобы быть выровненными друг относительно друга. Это означает, что неявная область данных начинается в этих структурах с того же самого адреса.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Роб Кёртен читать все книги автора по порядку

Роб Кёртен - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Введение в QNX/Neutrino 2. Руководство по программированию приложений реального времени в QNX Realtime Platform отзывы


Отзывы читателей о книге Введение в QNX/Neutrino 2. Руководство по программированию приложений реального времени в QNX Realtime Platform, автор: Роб Кёртен. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x