IS_ERR返回错误原因class_create
struct class *cls;
cls = class_create(THIS_MODULE, "sdev");
if(IS_ERR(cls)){
return PTR_ERR(cls);
}
解析:
创建设备节点使用了两个函数 class_create()和class_device_create()。在__exit()函数里,对应的使用class_destory()和class_device_destory()注销创建的设备节点。
但是在编译的时候,发现报错:implicit declaration of function ‘class_device_create’ 。
原因:在早期Linux的版本使用的是 class_device_create() 和 class_device_destory()。但是在Linux2.6.29以后,使用的函数变成了 class_create()和device_create(),并且需要添加头文件:#include <linux/device.h> 。
但是在编译的时候,发现报错:implicit declaration of function ‘class_device_create’ 。
原因:在早期Linux的版本使用的是 class_device_create() 和 class_device_destory()。但是在Linux2.6.29以后,使用的函数变成了 class_create()和device_create(),并且需要添加头文件:#include <linux/device.h> 。
最终原因:
#include <linux/device.h>
没有加头文件 上面代码居然 错误返回
浙公网安备 33010602011771号