如何在Linux中注册设备

| 我需要在Linux中注册新设备,但我注意到在内核2.6.34中未导出功能
device_register
...这可能是解决方案?     
已邀请:
我相信您应该根据设备类型使用
register_blkdev
register_chrdev
。     
在linux-2.6.32.28 / drivers / base中
core.c:EXPORT_SYMBOL_GPL(device_register);
2.6.38的ANd也位于同一文件中-这使我在2.6.34中得出结论,它也应位于同一文件中? 但是,如果您谈论的是mdio,则发现以下符号(通过nm vmlinux):
ffffffff81b66fae t fixed_mdio_bus_exit
ffffffff81af4468 t fixed_mdio_bus_init
ffffffff813977f0 t fixed_mdio_read
ffffffff81397610 t fixed_mdio_write
ffffffff81a68760 d mdio_bus_class
ffffffff813971b0 T mdio_bus_exit
ffffffff81af4425 T mdio_bus_init
ffffffff81396fd0 t mdio_bus_match
ffffffff81a687e0 d mdio_bus_pm_ops
ffffffff81396ff0 t mdio_bus_restore
ffffffff81397050 t mdio_bus_resume
ffffffff81397100 t mdio_bus_suspend
ffffffff81a686e0 D mdio_bus_type
ffffffff813975d0 T mdiobus_alloc
ffffffff81397380 T mdiobus_free
ffffffff813972a0 T mdiobus_read
ffffffff81397430 T mdiobus_register
ffffffff813971e0 t mdiobus_release
ffffffff81397330 T mdiobus_scan
ffffffff813973c0 T mdiobus_unregister
ffffffff81397210 T mdiobus_write
对于mii:
ffffffff81507a20 T dsa_slave_mii_bus_init
ffffffff81395b60 T phy_mii_ioctl
对于EXPORT_SYMBOL声明:
./drivers/of/of_mdio.c:
EXPORT_SYMBOL(of_mdiobus_register);

./drivers/net/phy/mdio-bitbang.c:
EXPORT_SYMBOL(alloc_mdio_bitbang);
EXPORT_SYMBOL(free_mdio_bitbang);

./drivers/net/phy/mdio_bus.c:
EXPORT_SYMBOL(mdiobus_alloc);
EXPORT_SYMBOL(mdiobus_register);
EXPORT_SYMBOL(mdiobus_unregister);
EXPORT_SYMBOL(mdiobus_free);
EXPORT_SYMBOL(mdiobus_scan);
EXPORT_SYMBOL(mdiobus_read);
EXPORT_SYMBOL(mdiobus_write);
EXPORT_SYMBOL(mdio_bus_type);

./drivers/net/phy/mdio-octeon.c:
EXPORT_SYMBOL(octeon_mdiobus_force_mod_depencency);

./drivers/net/fec_mpc52xx_phy.c:
EXPORT_SYMBOL_GPL(mpc52xx_fec_mdio_driver);

./drivers/net/mdio.c:
EXPORT_SYMBOL(mdio45_probe);
EXPORT_SYMBOL(mdio_set_flag);
EXPORT_SYMBOL(mdio45_links_ok);
EXPORT_SYMBOL(mdio45_nway_restart);
EXPORT_SYMBOL(mdio45_ethtool_gset_npage);
EXPORT_SYMBOL(mdio45_ethtool_spauseparam_an);
EXPORT_SYMBOL(mdio_mii_ioctl);

./drivers/net/fsl_pq_mdio.c:
EXPORT_SYMBOL_GPL(fsl_pq_mdio_bus_name);

./drivers/s390/net/qeth_core_main.c:
EXPORT_SYMBOL_GPL(qeth_mdio_read);
不确定这些是否对您有帮助? 您的类似问题发布在: http://www.linuxforums.org/forum/kernel/178782-how-control-switch-marvel-88e6097-mdio-bus-mpc8306-processor.html 更清晰。有关MPC8306(硬件,特定于Linux内核等)的更多信息,可以在这里找到: http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MPC830xKIT http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MPC8306 并据此: http://patchwork.ozlabs.org/patch/21828/ 对MDIO的补丁进行了详细阐述和解释。 和这里: http://www.mail-archive.com/eldk@lists.denx.de/msg00235.html 还提到了MPC8306的ELDK无需更改即可获得支持。 无论如何,可以在这里找到硬件信息: http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MPC8306&fpsp=1&tab=Documentation_Tab     
O \'Reillys关于设备驱动程序的好书可在此处免费获得。有点过时,但很好的参考。不是您要的,而是一个很好的参考...     

要回复问题请先登录注册