Nouveau源码分析(一)
// /drivers/gpu/drm/nouveau/nouveau_drm.c
1089 module_init(nouveau_drm_init);
1090 module_exit(nouveau_drm_exit);
相信只要看过linux源码的都会知道这意味着什么,Nouveau被加载后第一个执行的函数和Nouveau被卸载前最后一个执行的函数.
显然,我们需要查看nouveau_drm_init
// /drivers/gpu/drm/nouveau/nouveau_drm.c
1062 static int __init
1063 nouveau_drm_init(void)
1064 {
1065 if (nouveau_modeset == -1) {
1066 #ifdef CONFIG_VGA_CONSOLE
1067 if (vgacon_text_force())
1068 nouveau_modeset = 0;
1069 #endif
1070 }
1071
1072 if (!nouveau_modeset)
1073 return 0;
1074
1075 nouveau_register_dsm_handler();
1076 return drm_pci_init(&driver, &nouveau_drm_pci_driver);
1077 }
1065行,nouveau_modset,这是什么东西? 虽然我们完全可以跳过这段代码不看,但还是多了解一下吧.

本文是Nouveau源码分析的第一部分,主要关注module_init过程。文章详细介绍了nouveau_drm_init的执行流程,包括nouveau_modset、nouveau_register_dsm_handler和关键的drm_pci_init接口。通过drm_pci_init,Nouveau驱动得以注册,并能匹配和管理PCI中的Nvidia设备。后续章节将深入探讨Nouveau对特定Nvidia设备的初始化步骤。
最低0.47元/天 解锁文章
1725

被折叠的 条评论
为什么被折叠?



