Linux использует два кольца, кольцо 0 называется уровнем ядра, кольцо 3 называется уровнем пользователя. Соединение пользователя с ядром осуществляется (как уже было сказано) через системные вызовы. Между ними находятся библиотеки, как видно из пользовательского пространства. Таким образом, самый низкий уровень доступа к ядру реализован в библиотеках по соображениям стабильности, безопасности, синхронизации, интервалов сохранения и так далее. Драйвер ядра предоставляет различные интерфейсы для пользовательского пространства: (ioctl, sysfs, сокеты, символьные и блочные устройства и т. Д.) Интерфейсы пространства пользователя . Поэтому, если вы хотите, вы можете реализовать свой доступ к драйверу ядра, не используя библиотеки, или значительно упростить компиляцию двоичного файла со статическими связанными библиотеками.
Хорошей отправной точкой является чтение исходных текстов libusb, они хорошо документированы.