Глянул, aio_read etc есть в NuttX. Похоже, что для работы с CAN надо делать "драйвер пользовательского уровня" в виде одной из пользовательских задач со своим API, и прочий пользовательский код должен использовать этот API вместо обычного файлового ввода/вывода.