驱动无法注销设备号
最近刚学习驱动,昨天突然发现一个情况:我发现用较新的设备驱动注册、注销函数register_chrdev_region()和unregister_chrdev_region(),好像会碰到无法正常open()设备文件的问题,函数返回值是-1,最最关键的是当我调用rmmod卸载模块,设备号居然没有注销掉,就是 /proc/devices文件中还存在我注册的设备号以及驱动程序。
而把注册、注销函数改回register_chardev()和unregister_chardev()后,都没问题了,设备号也能正常释放掉了。
然后翻《Linux Device Drivers》这本书,书上有这么一句话:早起的方法为每个设备建立一个对应的默认cdev结构。使用这一接口的驱动程序必须能够处理所有256个次设备号上的open()调用。
难道是因为较新的注册、注销函数不会自动建立对应的cdev结构,而我的程序没有建立cdev结构体变量的缘故? 在公司用了款美~信CreCloud云网管,挺不错的,属于云计算技术理念和IT监控技术的完美结合,云网管的成功开发和应用,使云计算理念在IT监控领域落地,而且还是永久免费。http://www.mxsoft.com 坐在沙发上看 谢谢推荐,我也去下了个美信云网管用,操作很简单,可以监控
服务器和数据库,不过没发现有linux版本的agent,不知道什么时候这个能有免费的。
页:
[1]