Múltiplas instâncias de um módulo

1

Eu usei cat /proc/modules para listar os detalhes do processo. Abaixo módulo mostra como 4 instâncias estão presentes:

poe_isr 3046 4 - Live 0xc37e1000 (O)

O que isso significa? Como faço para ver onde essas instâncias estão sendo usadas? Se o módulo estiver usando 0 instâncias e Live, o que isso significa? Módulo não carregado ainda ao vivo?

adcmods 1565 0 - Live 0xc37dd000 (P)
    
por Ravi 04.12.2017 / 13:21

2 respostas

3

É um contador. Pode ser incrementado ou decrementado pela API do núcleo do kernel.

É de responsabilidade dos módulos, quando eles são incrementados. Por exemplo, se você tiver um módulo somefs no kernel, o comportamento esperado é incrementar esse contador com qualquer montagem de uma partição somefs e decrementá-lo na desmontagem. Dessa forma, somefs pode garantir que não será removido enquanto houver uma partição somefs montada.

Se o contador de uso do módulo for diferente de zero, rmmod falhará nesse módulo. Mas rmmod -f não, se a remoção forçada do módulo for compilada no kernel.

Assim, as coisas importantes:

  • O incremento e decremento do contador são de responsabilidade dos módulos, não há rastreamento de referência genérico e sofisticado por trás dele .
  • Em muitos casos, funciona corretamente, mas nem sempre. Por exemplo, alguns módulos sujos, como ipv6 funcionam dessa maneira, aumentam o contador para 1 em insmod e nunca diminuem. Assim, se você compilou ipv6 como módulo, você nunca será capaz de rmmod it. Alguns driver de placa de vídeo funciona de maneira semelhante, porque suas rotinas que seria deinitialize, estão faltando. Nenhum módulo desse tipo pode ser uma fonte de orgulho para seus desenvolvedores.
  • Se você não puder remover um módulo por causa disso, não há uma maneira geral de descobrir o que é exatamente usado por um módulo.
por 04.12.2017 / 13:51
1
poe_isr 3046 4 - Live 0xc37e1000 (O)

3ª coluna indica que há 4 módulos / processos dependentes. Portanto, rmmod não funcionará. A quarta coluna indica se são módulos ou não módulos. '-' indica que 4 são não-módulos. No exemplo acima, poe_isr é dependente de 4 não-módulos.

    
por 05.12.2017 / 09:30