驱动开发系列67 - NVIDIA 开源GPU驱动open-gpu-kernel-modules分析-驱动初始化
1. nvidia_init_module
这个函数就是 NVIDIA 驱动加载的总入口,把整个驱动从底层内核接口到用户态设备节点的初始化工作全都做完。
// NVIDIA 内核模块初始化函数
// 在模块加载时调用,初始化驱动核心功能
static int __init nvidia_init_module(void)
{// 打印内核日志,标记模块初始化开始printk(KERN_INFO "my_nvidia_driver nvidia_init_module called!");int rc; // 返回码,用于判断每个初始化步骤是否成功NvU32 count; // GPU 设备数量nvidia_stack_t *sp = NULL; // 驱动内部状态数据结构指针const NvBool is_nvswitch_present = os_is_nvswitch_present(); // 是否存在 NVSwitch(特殊硬件)// 初始化驱动内存调试子系统,用于追踪内存分配nv_memdbg_init();// 初始化 /proc 文件系统节点,用于查看驱动状态rc = nv_procfs_init();if (rc < 0){nv_printf(NV_DBG_ERRORS, "NVRM: failed to initialize procf