No Linux, muitos drivers de dispositivos fazem parte do kernel, não de bibliotecas ou processos. Os programas interagem com eles usando arquivos de dispositivos (geralmente em /dev
) e várias chamadas do sistema, como open
, read
, write
, ioctl
...
Existem exceções, no entanto. Alguns drivers de dispositivo usam uma mistura de stubs de driver de kernel e bibliotecas de espaço de usuário ( por exemplo, usando UIO). Outros são implementados inteiramente no espaço do usuário, geralmente em cima de alguma interface de bit-banging (UART ou GPIO). Em ambos os casos, eles geralmente estão em processo, então você não verá um processo separado, apenas o processo que está usando o dispositivo.
Para "encerrar" um driver de dispositivo, você precisa interromper todos os processos que o usam e remover seus módulos do kernel (supondo que sejam criados como módulos) e, opcionalmente, qualquer outro módulo usado e que não seja mais necessário. Você pode listar os módulos em seu sistema usando lsmod
e descarregá-los usando rmmod
ou modprobe -r
, os quais só funcionarão se lsmod
indicar que não têm usuários.