udev - altera o evento de udev_device_get_action

0

Estou monitorando os eventos de todos os dispositivos conectados ao host. O Linux tem o daemon udev, que ouve todos os eventos específicos do dispositivo, como on-line, off-line, adicionar, remover e alterar .

Eu uso uma função fornecida pelo linux udev_device_get_action , que é usada para obter os eventos / ações no dispositivo.

Na minha máquina, estou continuamente recebendo eventos de alteração retornados dessa função na variável do meu código. [Retorna o ponteiro do caractere]

Eu verifiquei o código linux para a função udev_device_get_action , ele apenas retorna a action da estrutura do dispositivo do udev.

UDEV_EXPORT const char *udev_device_get_action(struct udev_device *udev_device)
{
        if (udev_device == NULL)
                return NULL;
        return udev_device->action;
}

Então, como posso saber de onde exatamente esses eventos de mudança estão vindo?

    
por amitam 06.10.2015 / 05:58

1 resposta

1

uevents são gerados pelo próprio kernel (isto é, pelos drivers do kernel).

O udev os recebe em netlink (7) , usando a família NETLINK_KOBJECT_UEVENT, grupo 1. Em seguida, ele adiciona vários campos extras às regras & hwdb, e retransmite os uevents estendidos para o kobject-uevent group 2, onde a libudev finalmente os recebe.

É possível disparar os eventos manualmente (por exemplo, escrevendo "adicionar" ou "alterar" ao arquivo /sys/…/uevent de um determinado dispositivo), mas isso geralmente não é feito, exceto ao usar "disparador do udevadm".

    
por 06.10.2015 / 08:10