Linux 2.6 字符设备驱动程序分配和释放设备编号

来源:互联网 发布:net与php的区别 编辑:程序博客网 时间:2024/05/22 10:24

(1)       静态分配主设备号:register_chrdev_region(dev_t from, unsigned count, const char *name),其中from包含了主、次设备号两个部分。需要静态分配的主设备号必须包含在from中,from的次设备号通常为0。使用该函数前,需要首先查看Documentation/devices.txt文件哪些主设备号没有被分配。

 

(2)       动态分配主设备号:alloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count, const char *name),其中dev是出口参数,保存了动态分配的主设备号。该函数是在insmod之后被调用的,也就是说我们不能事先创建设备文件(因为此时主设备号不知道),需要动态查看/proc/devices文件,可利用awk等工具。

 

(3)       register_chrdev_region()和alloc_chrdev_region()都是调用了static struct char_device_struct * __register_chrdev_region(unsigned int major, unsigned int baseminor, int minorct, const char *name)函数。

 

(4)       释放设备编号:无论是静态分配设备编号还是动态分配设备编号,释放调用的函数都是void unregister_chrdev_region(dev_t from, unsigned count)

原创粉丝点击