Цитата(Dizel @ Sep 21 2005, 19:45)
в QNX, если я ничего не путаю, в user-space приложение можно вставить все что душе угодно: обработчик прерывания, работу с портами ввода/вывода. Соответственно если воткнуть работу с сопроцессором прямо в прерывание что произойдет? т.е. она сохраняет контекст FPU перед входом в прерывание?
Можно вставить "почти всё"

, но сознательно дав приложению право такое делать: ThreadCtl() - после чего ответственность за последствия приложение берёт на себя. В QNX есть 2 разных техники работы с прерываниями:
- InterruptAttach() - это, собственно, классическкая схема ISR (подобная в других ОС: с нижней-верхней частью...), и выполняется ISR а контексте микроядра, что, понятно, опасно...
- InterruptAttachEvent() - более дружественный способ, когда по IRQ будет только возбуждено зарегистрированное событие, а оно уже может вызвать передиспетчеризацию user-space потоков. И вот тогда, естественно уже можно пользовать FPU и всё-всё-всё режима юзера...
Это по своей идее - сильно близко к тому, что предлагалось здесь уже об использовании select() ... Поэтому всё то же можно сделать и в Linux, особенно учитывая описанную позже логику устройства, и уж совсем не жёсткие требования на время реакции (5-15 mc - это весьма много

). Что-то типа:
- сделать в пользовательском приложении поток обработчика (FPU + отправка ответа), с SCHED_RR или SCHED_FIFO (т.е. сразу поставить его в приоритетный режим), который только ожидал бы для насчала своих операций ... например, сигнала SIGRTMIN...
- по IRQ ISR только опрашивал бы устройство, приводил бы всё в порядок с IRQ ... и возбуждал бы SIGRTMIN для активации потока ответа.
Что-то такое...
Цитата(Dizel @ Sep 21 2005, 19:45)
Это я к тому, что может человеку проще QNX взять....
Вряд ли,

... в виду стоимости QNX для любых коммерческих проектов, да и динамика в Linux/*BSD настолько высокая, что всё меньше "ниши" где мог бы управиться "только QNX"

...