Eu tenho um dispositivo de classe de entrada (acelerômetro) vinculado a um driver que expõe os atributos sysfs que eu preciso acessar do site do usuário. Usando uma regra do udev, forneci um alias que identifica inequivocamente o meu dispositivo, ou seja, ll /dev/input yields:
lrwxrwxrwx 1 root root 6 May 18 13:47 accelerometer0 -> event0
drwxr-xr-x 2 root root 60 May 18 13:47 by-path
crw-rw---- 1 root input 13, 64 May 18 13:47 event0
crw-rw---- 1 root input 13, 65 May 18 13:47 event1
crw-rw---- 1 root input 13, 66 May 18 13:47 event2
Até aqui, tudo bem: posso open("/dev/input/accelerometer0") no meu código da terra do usuário e começar a transmitir os dados. Mas para, por exemplo, alterar a taxa de dados, preciso gravar no atributo pollrate_ms no diretório sysfs relacionado. Um ls /sys/class/input/ produz:
event0 event1 event2 input0 input1 input2
Por acaso, sei que pollrate_ms reside em input0/device , mas preciso descobrir isso de forma programática, especialmente porque atualizações futuras podem alterar essa numeração.
Eu sei que posso usar libudev para enumerar /sys/class/input e, em seguida, usar um loop for para explorar cada um desses diretórios até encontrar o que contém pollrate_ms . Parece que há muito trabalho em comparação com a facilidade de identificar o dispositivo sem ambigüidade por meio de uma regra do udev.
Estou perdendo uma maneira fácil ou devo apenas sugá-lo?