// set up the transmit IOV
SETIOV(tx_iov + 0, &io_msg.o, sizeof(io_msg.o));
SETIOV(tx_iov + 1, msg, osize);
// set up the receive IOV
SETIOV(rx_iov + 0, &io_msg.i, sizeof(io_msg.i));
SETIOV(r.x_iov + 1, msg, isize);
// set up the _IO_MSG itself
memset(&io_message, 0, sizeof(io_message));
io_message.type = _IO_MSG;
io_message.mgrid = cmd;
return (MsgSendv(fd, tx_iov, 2, rx_iov, 2));
}
Отметьте несколько вещей.
В функции
Структура
В качестве кода завершения функции
Единственная «забавная» вещь, которую мы тут сделали, касается поля
, там представлены используемые в настоящее время диапазоны. В нашем вышепредставленном мы могли предположить, что COMMAND_XYZ базирована на _IOMGR_PRIVATE_BASE:#define COMMAND_XYZ (_IOMGR_PRIVATE_BASE + 0x0007)
или QSSL назначила нам специальный поддиапазон:
#define COMMAND_XYZ ( IOMGR_ACME_CORP + 0x0007)
А что если клиент, которого вы переносите, использует администратор ввода/вывода? Как адаптировать его для QNX/ Neutrino? Ответ прост: мы уже это сделали. Установив интерфейс на основе файловых дескрипторов, мы уже используем администратор ресурса. В QNX/Neutrino вам почти
1. Вам пришлось бы самим беспокоиться о сообщении _IO_CONNECT, поступившим с клиентским вызовом
2. Вам пришлось бы искать способ сопоставить клиенту конкретный контекстный блок в администраторе ресурса. Это, конечно, не ракетная техника, но поработать придется.
3. Вам придется инкапсулировать все ваши сообщения вручную вместо использования стандартных POSIX-функций, которые бы сделали эту работу за вас.
4. Ваш администратор ресурса не будет работать с приложениями на основе
mp3_decode spud.mp3 >/dev/audio
, потому что В QNX4 единственным способом передачи неблокирующего сообщения было создание прокси — это делалось с помощью функции
В QNX/Neutrino вы бы вместо этого настроили структуру struct sigevent
Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT