Depende do tipo de dispositivo para o qual o driver está escrito. Um exemplo simples, mas comum, são os dispositivos PCI .
Os dispositivos PCI identificam-se com uma série de registros no Espaço de Configuração PCI . Assim, por exemplo, uma placa de rede identificará o tipo de cartão com uma série de valores de registro que o kernel Linux pode ler.
Os drivers de dispositivo para dispositivos PCI exportam uma tabela de IDs de PCI que descrevem quais dispositivos o próprio controlador pode controlar. Esta tabela de IDs está registrada no kernel do Linux. O kernel do Linux pode então percorrer cada dispositivo conectado ao sistema, obter o ID do PCI do dispositivo e, em seguida, verificar qual driver está registrado para esse ID. É assim que um driver é selecionado para uma parte específica do hardware PCI.
Eu escrevi uma postagem no blog a> sobre a pilha de rede do Linux (ajuste, otimização, monitoramento e mais). No início desse post eu caminho através do código de driver de rede igb
Linux (com exemplos de código reais) e mostro o código que exporta os IDs PCI para os dispositivos que o driver igb
pode controlar.