Como o udev obtém números de dispositivos para os dispositivos que cria?

5

Caiu de uma pequena conversa no bate-papo .

Uma das principais vantagens do udev é que você não precisa mais se preocupar com o esgotamento de números de dispositivos maiores e menores . Mas os dispositivos criados pelo udev ainda têm esses números associados a eles. Como o udev coopera com o kernel para criar arquivos de dispositivos com os números principais e secundários apropriados?

    
por strugee 12.12.2013 / 09:12

2 respostas

5

O kernel aloca um número principal: menor, seja estaticamente (em drivers que possuem uma alocação estática e não se esgotaram) ou dinamicamente (em drivers que suportam alocação dinâmica e usam sua quota estática). Este número está listado na mensagem que o kernel envia para o udev.

Você pode ver as variáveis que o udev vê sobre um dispositivo em /sys/devices/…/uevent . Por exemplo:

$ cat /sys/devices/virtual/mem/null/uevent 
MAJOR=1
MINOR=3
DEVNAME=null
DEVMODE=0666
$ cat /sys/block/sda/sda1/uevent 
MAJOR=8
MINOR=1
DEVNAME=sda1
DEVTYPE=partition

As regras do udev determinam o (s) nome (s) e permissões dos arquivos do dispositivo. O número do dispositivo vem do kernel (é necessário, pois o kernel já tomou uma decisão e o trabalho do udev é garantir que os aplicativos que acessam o dispositivo pelo nome alcancem o número escolhido pelo kernel).

    
por 13.12.2013 / 01:24
0

Os números dos dispositivos não são escolhidos aleatoriamente, independentemente do subsistema que cria os dispositivos. Existe um padrão numérico de dispositivos, chamado de LANANA Linux Device List . Se você instalar a documentação do kernel, confira Documentation/devices.txt .

    
por 12.12.2013 / 14:52