Código-fonte para nomes de dispositivos

3

Em um sistema Linux, muitos nomes de dispositivo podem ser vistos em /dev . Isso deve ser definido em algum lugar no código-fonte do kernel do Linux, no código do udev, nas árvores de dispositivos ou no código do driver.

Por exemplo, onde o código-fonte localizado que determina uma unidade de disquete deve começar com fd ou que um disco rígido inicia com sd ?

    
por dtmland 17.02.2017 / 01:13

2 respostas

2

Existe o projeto LXR (referência cruzada do Linux) , onde você pode selecionar sua versão do kernel e pesquisar o código.

(Nota: O antigo link não funciona mais corretamente, pelo menos para mim; a pesquisa é interrompida para versões mais recentes do kernel.)

Procurando por "floppy" (sem aspas) e algumas tentativas de espionar os resultados para "fd" (com aspas) me levaram à implementação do dispositivo de disquete (aqui no kernel 4.9):

link

Agora, sendo uma referência cruzada, você pode seguir register_blkdev para seus outros locais de uso.

    
por 17.02.2017 / 13:56
2

Um mais fácil de encontrar pode ser algo como /dev/null ou /dev/zero . Para aqueles, dê uma olhada em ${kernel_root}/drivers/char/mem.c . Para o 4.9.6 (e provavelmente já está sendo assim há algum tempo), há uma matriz de struct memdev denominada devlist , em que cada entrada na matriz corresponde a um dispositivo de memória:

...
[3] = { "null", 0666, &null_fops, 0 },
...
[5] = { "zero", 0666, &zero_fops, 0 },
...

Os null_fops e zero_fops contêm as estruturas de operação de arquivo dos dispositivos correspondentes.

    
por 17.02.2017 / 01:28

Tags