我正在尝试使用内核模块在sys / class / thermal中安装虚拟热区设备。做一个insmod注册设备工作得很好..
struct thermal_zone_device *tz_dev; //declared globally...
...
//in the init function
tz_dev = thermal_zone_device_register("tsensor", 2,NULL,&tsensor_ops, 0,0, 0,0);
其中tsensor_ops指向带有一堆虚拟回调函数的struct thermal_zone_device_ops。
但是,当我使用以下代码执行rmmod时,
thermal_zone_device_unregister(tz_dev);
我收到一条消息说杀了!回复和dmesg给了我一些关于NULL指针的错误。我恢复的唯一方法是重启机器。有什么方法可以避免这种情况吗?
答案 0 :(得分:0)
好的我修好了。我的特定版本的linux,thermal_sys框架要求我们为get_crit_temp声明一个函数。如果您没有定义它,它将在取消注册设备时尝试删除此设备文件,并且最终会出现NULL引用错误。请注意,这不适用于3.0以上的Linux版本