De onde vem um arquivo de dispositivo?

4

Estou lendo o guia de programação do módulo Linux Kernel e sou um bit onfused sobre como funcionam os drivers de dispositivos.

Eu tentei acompanhar e criar um driver de dispositivo básico, que aparece em / proc / devices, o que é ótimo. De acordo com o guia, para fazer interface com o driver no Linux, um programa userspace pode interagir com o arquivo de dispositivo do dispositivo em / dev /. No momento, porém, o módulo que escrevi não gera um arquivo de dispositivo. O que gerencia a geração de novos arquivos? Isso é algo que eu devo fazer em module_init?

E supondo que eu tenha ido e obtido um arquivo de dispositivo, esteja interagindo com o driver, digamos um programa C ++, abrindo um fstream e lendo ou gravando esse arquivo, ou existem bibliotecas específicas usadas para interagir com o dispositivo arquivos no espaço do usuário?

    
por Zephyr 15.06.2016 / 06:30

1 resposta

2

Os arquivos em /dev são criados principalmente pelo processo udev , que recebe eventos do kernel ouvindo o soquete netlink de NETLINK_KOBJECT_UEVENT (consulte man 7 netlink ). Os eventos são enviados quando um novo objeto de kernel (kobject) é criado. Esses objetos também são vistos no sistema de arquivos /sys sysfs. Em particular, os arquivos denominados dev na subárvore /sys/devices mantêm o número maior e menor do nó a ser usado para um determinado dispositivo. Por exemplo

$ cat /sys/devices/pnp0/00:05/tty/ttyS0/dev
4:64

Isso é explicado neste capítulo 14 pdf on-line Linux Device Drivers, Terceira edição de 2005, O modelo de dispositivo do Linux . É um pouco desatualizado e não menciona netlink , por exemplo.

    
por 15.06.2016 / 17:36