Encontre qual programa acessou um módulo do kernel

2

Como faço para acessar uma lista de usuários / programas que acessaram um determinado módulo?

Eu corro:

lsmod | grep ^uvcvideo

Isso retorna esta linha quando nenhum aplicativo está usando minha câmera de vídeo:

uvcvideo               86016  0

Bem, eu tenho algo em execução que quando "0" no final da linha vira para qualquer coisa menos 0 (na prática, isso geralmente é 1) ele me envia uma notificação de que minha câmera está em uso.

Eu quero saber se existe um log de programas que transformou esse 0 em 1, ou quais módulos são acessados quando / como.

    
por David Kamer 21.11.2018 / 05:10

1 resposta

1

Geralmente, não há arquivo de log para isso. Existem ferramentas que você pode usar para criar uma!

O kernel tem um ponto de rastreio integrado para a função try_module_get (). Essa é a função que aumenta a contagem de referência de um módulo. Este ponto de rastreio está no subsistema module e é chamado module_get .

link (leitura longa).

Para começar, você pode experimentar perf trace -a --no-syscalls -e module:module_get -e module:module_put . Isso mostra o nome do programa, mas não mostre o PID .

    
por 21.11.2018 / 12:39