Linux usa dos anillos, el anillo 0 se llama nivel de núcleo, el anillo 3 se llama nivel de usuario. La conexión del usuario al kernel se realiza (como ya se dijo) a través de syscalls. Entre ellas están las bibliotecas, como se ve desde el país de los usuarios. Por lo tanto, el acceso de nivel más bajo al núcleo se implementa en bibliotecas, por razones de estabilidad, seguridad, sincronización, espacio de guardado, etc. El controlador del núcleo proporciona diferentes interfaces para el país de usuario: (ioctl, sysfs, sockets, dispositivos de caracteres y bloques, etc.) Interfaces de espacio de usuario . Entonces, si lo desea, puede implementar su acceso al controlador del kernel omitiendo las bibliotecas, o compilar mucho más fácilmente su binario con bibliotecas vinculadas estáticas.
Un buen punto de partida es leer las fuentes de libusb, están bien documentadas.