Новелла увы, превратилась в устареллу, но попохвалятся хочется. Было нужно организовать
QUOTE (DASM @ Apr 27 2013, 01:09)

общение ARM и DSP на одном кристалле
- девайс DM6446/DM6467. Сначала попытался сделать попроще, но в итоге пришёл к необходимости сделать синхронный мини-драйвер, на 4 I/O канала
QUOTE (AlexandrY @ Apr 5 2013, 12:35)

[...] никаких линуксов и стандартных API типа POSIX
естественно, в ОС, но не Linux, не DSP/BIOS и не SYS/BIOS.
QUOTE (AlexandrY @ Apr 5 2013, 12:35)

разумно ли драйвер нагружать функцией менеджера сообщений?
Соответственно, вся логика такого мини-драйвера указывает (вопиёт) на то, что именно драйвер и должен быть менеджером сообщений и процессов, ожидающих I/O по каналу. Естественно, не имеет значения, какой процесс инициирует передачу, ресивер или трансмиттер и на каком из двух ЦПУ (понятно, что транзакция должна начатся в тот момент, когда на концах канала есть оба процесса, передатчик и приёмник). Приоритеты в очередях не учитываются, очереди - обычные FIFO, но каналов-то несколько, они могут быть поделены для разных приоритетов. И небольшой протокольчик тоже необходим, что бы, по крайней мере, передать ресиверу признак завершения транзакции трансмиттером.
Наибольшее затруднение в этих девайсах - аппратное средство обмена между процессорами, межпроцессорные прерывания не ставятся в очередь, и приходится спинлоком опрашивать состояние флага в регистре. Это единственное некрасивое место...
В общем, мучился в одиночку, сюда не смотрел, а вы тут уже без меня всё сделали...