При микроядре, как известно, каждый драйвер работает отдельным процессом в userspace. И вся работа с ним идет по его интерфейсу.
А в монолитном ядре есть специальные интерфейсы для userspace и для kernelspace. И зачастую интерфейсы kernelspace описаны максимум в виде разбросанных по коду комментариев.
И когда требуется обратиться к ним из kernelspace, то происходит приступ нелюбви, особенно если имеешь с ними дело впервые.