我需要在linux中注册一个新设备但是我注意到在内核2.6.34中没有导出函数device_register
...哪个可能是解决方案?
答案 0 :(得分:2)
我认为您应该使用register_blkdev
或register_chrdev
,具体取决于设备类型。
答案 1 :(得分:1)
在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);
不确定这些是否有帮助?
您的类似问题发布在:
更清楚。有关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
答案 2 :(得分:0)
O'Reilly这本关于设备驱动程序的好书可以在这里免费获得O'reilly。有点过时,但很好的参考。不是你要求的,而是一个很好的参考......