Linux内核参数vga=是怎样影响显示模式(2)

搜索的源代码,发现在/drivers/video/vesafb.c的函数vesafb_probe中,printk输出了以上信息
那么,是哪个函数调用vesafb_probe的呢?继续找。。发现只有这个与vesafb_probe有关
static struct platform_driver vesafb_driver = {
.probe = vesafb_probe,
.driver = {
.name = "vesafb",
},
};
很明显,必定有哪个地方通过 “->probe” 调用vesafb_probe。搜索关键词“->probe” ,竟然只有几个,都不相关。改搜“>probe”,这一次还不少。去掉一些明显不可能的(如 pci,usb下的),找到最有可能的 driver_probe_device函数(/drivers/base/Dd.c文件中)。照此思路,依次找到__driver_attach(调用driver_probe_device),driver_attach(调用__driver_attach)
bus_add_driver(调用driver_attach),driver_register(调用bus_add_driver),platform_driver_register(调用driver_register),vesafb_init(调用platform_driver_register),最后module_init(vesafb_init)
而通过module_init指定的函数,会在do_initcalls中调用 接着do_basic_setup(调用
do_initcalls),init(调用do_basic_setup)。至此,终于弄明白vesafb_probe的被调用过程。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wzwxyx.html