Por que devo invocar o mknod externamente em vez de diretamente no meu driver?

1

Lendo todos os livros / artigos / tutoriais / exemplos sobre drivers de dispositivo de caracteres que pude encontrar, todos eles abordam como adquirir um número principal em meu código de driver e todos sugiro que eu faça isso invocando alloc_chrdev_region() . Para criar o nó do dispositivo real, todos eles me dizem para invocar mknod fora do código do meu driver manualmente ou em um script. Uma referência quer que meu motorista imprima o número principal. Outro quer que eu use awk on /proc/devices para encontrar o maior número. Há menção à função mknod() , mas parece ser destinada ao uso no código do usuário.

Obviamente, estou sentindo falta de algo, pois não entendo por que não há como meu motorista ser autônomo, ou seja, eu faço modprobe my_driver e acabo com, digamos, /dev/my_driver criado sem ter fazer qualquer outra coisa.

    
por David H Olson 07.02.2017 / 20:47

2 respostas

2

O par de comandos device_create e class_create fazem o truque no Linux. Verifica link

    
por 03.05.2017 / 07:21
0
O Unix segue tradicionalmente a tradição "mecanismo, não política". No caso de drivers de dispositivo, isso significa que a identidade do driver no kernel é apenas o maior / menor número do dispositivo. Nomear o dispositivo (a "política *) usando o mknod foi deixado para o espaço do usuário.

    
por 07.02.2017 / 21:11