驱动模块编译成功,装载失败

hello_drv_test.zip (3.0 KB)
我的代码make结果


问题:
执行lsmod hello_drv.ko命令后,再执行 cat /proc/devices,里面有hello设备号,但是我执行lsmod命令后里面没有hello驱动模块

static int __init hello_init(void)
{
err = PTR_ERR(hello_class); // 提取错误代码
return err;错误
return 0;
}
解释:
源码:
static inline long __must_check PTR_ERR(const void *ptr)
{
return (long) ptr;
}

static inline long __must_check IS_ERR(const void *ptr)
{
return IS_ERR_VALUE((unsigned long)ptr);
}
PTR_ERR返回的是hello_class的地址,然后 IS_ERR_VALUE宏处理判断建立hello_class是否正确,hello_class建立正确的情况下,PTR_ERR返回的不是0, 如果 hello_init 返回任何非零值,表示模块初始化失败。模块加载将被中止,模块不会成功加载到内核中。