У меня mb_interfacовские макросы под Linuxom отказались компилироваться. И насколько я знаю более рекомендуется nonblocking чтение и запись.
А вот такие макорсы генерит System Generator:
Код
#define MB_NBWRITE_CNTL_WITH_STATUS(val,status) \
asm volatile ("ncput %1, rfsl<WRITESLOTID>\nmfs %0,rmsr" : "=d" (status) : "d" (val))
#define MB_NBWRITE_DATA_WITH_STATUS(val,status) \
asm volatile ("nput %1, rfsl<WRITESLOTID>\nmfs %0,rmsr" : "=d" (status) : "d" (val))
#define MB_NBREAD_DATA_WITH_STATUS(val,status) \
asm volatile ("nget %0, rfsl<READSLOTID>\nmfs %1,rmsr" : "=d" (val), "=d" (status))
status возвращает удачно или неудачно выполнилась команда.
И все это 100% работает под Linuxom по крайней мере в версии 2.4.
Но вот товарищ John Williams так не рекомендует делать, если доступ к FSL идет из разных одновременно выполняющихся приложений. Поэтому он забэбехал библиотеку с очередями и еще с чем-то.
Вроде бы хорошо в том, что она создает устройстваб в которые можно писать как в файл и читать теми же командами. Но мне надо было CNTL писать. А там такого не было.
В итоге она не заработала и я на нее плюнул.