Evgeny_CD, Архитектор (06.03.2012 14:50, просмотров: 126) ответил lentjaj2 на В Linux и так постарались многое стандартизировать, даже в физической памяти через файл можно обращаться /dev/mem. Вам видимо вот такая штука нужна
Разделяемая память - она между процессами делится. Мне надо между процессом и ядром, без дополнительной буферизации. По универсальности есть такая идея. Иерархия:
* класс устройства
* номер устройства
* номер потока
* тип сообщения (идентификатор типа)
* номер сообщения в потоке
Сообщение - это структура с полями.
Если сообщение имеет како-то взаимодействие с другим сообщением (ответ на команду, например), то есть ссылка на это сообщение номер потока:номер сообщения. Чтобы можно было сделать неблокирующий обмен:
* родил сообщение
* кинул в драйвер
* запомнил в локальном хранилище
* что-то творишь
* пришло сообщение - смотришь ссылку
* при полном выполнении очистил хранилище и ответ
Есть глобальный справочник (к коду отношения не имеет), где прописаны все типы сообщений и смысл их полей.
Каждый тип сообщения обрабабытвается своей функцией. Ей просто передают указатель на структуру, она далее проверяет, ее ли это тип, и возится с полями структуры.
Все сообщение, порождаемые железом, имеют метку времени - когда оно произошло. Это позволит детально восстановить работу железа в любом случае.
Сообщения от приложения к драйверу могут иметь метку времени - когда это нужно выполнить.