É possível dizer qual fonte carregou um módulo do kernel do Linux?

1

Na minha distribuição Linux, há vários módulos carregados durante a inicialização e estou tentando descobrir de onde eles são carregados.

[root /proc]# lsmod
Module                  Size  Used by
bufferclass_ti          5409  0
omaplfb                11525  0
musb_dsps               6444  0
musb_hdrc              52530  1 musb_dsps
pvrsrvkm              174837  2 bufferclass_ti,omaplfb
c_can_platform          4172  0
c_can                   8180  1 c_can_platform
can_dev                 6951  1 c_can
musb_am335x             1199  0

Pesquisando em /etc/init.d , posso ver os scripts que carregam os módulos USB e buffer de quadros:

[root /etc/init.d]# grep -rsI "modprobe" *
loadusb.sh:modprobe musb_hdrc
loadusb.sh:modprobe musb_am335x
loadusb.sh:modprobe musb_dsps
pvr-init:       modprobe omaplfb
pvr-init:       modprobe bufferclass_ti

Mas parece que não consigo encontrar onde os módulos CAN são carregados. Não há /etc/modules ou /etc/modules.conf nessa plataforma, e eu pesquisei /etc/ para modprobe / insmod / c_can , mas sem sorte. No dmesg eu posso ver o driver CAN sendo iniciado:

[    3.745933] CAN device driver interface
[    3.891592] c_can_platform 481cc000.d_can: c_can_platform device registered (
regs=fa1cc000, irq=68)

Mas não sei qual script carregou. Existe alguma informação adicional / logs que eu possa desenterrar para ajudar a identificar o que coloca os módulos CAN no sistema?

algumas informações de modinfo e /sys/devices :

[root /etc/udev/rules.d]# modinfo c_can
filename:       /lib/modules/3.12.103.12-am335xpsp-TMKv1.03.02R/kernel/drivers/net/can/c_can/c_can.ko
description:    CAN bus driver for Bosch C_CAN controller
license:        GPL v2
author:         Bhupesh Sharma <[email protected]>
srcversion:     692B302E87FD3333EF840FE
depends:        can-dev
intree:         Y
vermagic:       3.12.103.12-am335xpsp-TMKv1.03.02R mod_unload modversions ARMv6 p2v8
[root /etc/udev/rules.d]# modinfo can_dev
filename:       /lib/modules/3.12.103.12-am335xpsp-TMKv1.03.02R/kernel/drivers/net/can/can-dev.ko
alias:          rtnl-link-can
author:         Wolfgang Grandegger <[email protected]>
license:        GPL v2
description:    CAN device driver interface
srcversion:     65FA84AFE987C1155CF95A1
depends:
intree:         Y
vermagic:       3.12.103.12-am335xpsp-TMKv1.03.02R mod_unload modversions ARMv6 p2v8
[root /]# modinfo c_can_platform
filename:       /lib/modules/3.12.103.12-am335xpsp-TMKv1.03.02R/kernel/drivers/net/can/c_can/c_can_platform.ko
description:    Platform CAN bus driver for Bosch C_CAN controller
license:        GPL v2
author:         Bhupesh Sharma <[email protected]>
srcversion:     DA1DCA3FBA7E75E459BDCEC
alias:          platform:d_can
alias:          platform:c_can
alias:          platform:c_can_platform
alias:          of:N*T*Cbosch,d_can*
alias:          of:N*T*Cbosch,c_can*
depends:        c_can
intree:         Y
vermagic:       3.12.103.12-am335xpsp-TMKv1.03.02R mod_unload modversions ARMv6 p2v8
[root /sys/devices]# ls
44e10800.pinmux   fixedregulator.3  platform          software
backlight.4       ocp.2             soc.0             system
breakpoint        panel.5           soc0              virtual
    
por Mike 27.06.2015 / 17:31

1 resposta

0

De acordo com meu entendimento atual. Ninguém (script de espaço do usuário) está realmente chamando modprobe \ insmod para obter esses drivers CAN inseridos, isso é porque eles são Platform Devices .

Isso é identificado por:

  1. A informação alias: platform: do modinfo comando
  2. O código-fonte para o c_can_platform que define o c_can_plat_driver como platform_driver :

Os drivers de plataforma são registrados como tal no código, e como parte do procedimento de inicialização do kernel do Linux, a lista de drivers de plataforma é inserida / iniciada.

Eu preciso encontrar evidências / documentações mais concretas disso, mas isso faz sentido para mim agora, então vou colocá-lo como uma resposta.

    
por 28.06.2015 / 19:41