码迷,mamicode.com
首页 > 其他好文 > 详细

06 字符设备(二)

时间:2016-12-01 01:57:39      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:cal   占用   读写   ase   linux   require   register   sig   ssi   

上一节字符驱动不足:

(1)在注册设备号的时候,我们是指定一个特定的主设备号,如果设备号已经注册了就会出现注册失败的情况。

改善:采用动态注册,让Linux内核自动分配一个未使用的设备号。

(2)每次加载完模块后,必须手动创建设备节点,很麻烦。

改善:注册完设备后,让Linux系统自动在/dev目录下创建设备节点。

(3)字符设备的读写函数接口,没有实际的数据流向。

改善:xxx_read函数接口将buffer内容拷贝到用户空间,xxx_write函数接口将用户空间传下的数据,写到buffer里面。

(4)char_device是在data段分配的,占用很大空间。

改善:char_device的空间在Linux内核的堆区分配。

一、动态注册设备号

/**
* alloc_chrdev_region() - register a range of char device numbers
* @dev: output parameter for first assigned number
* @baseminor: first of the requested range of minor numbers
* @count: the number of minor numbers required
* @name: the name of the associated device or driver
*
* Allocates a range of char device numbers. The major number will be
* chosen dynamically, and returned (along with the first minor number)
* in @dev. Returns zero or a negative error code.
*/
int alloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count, const char *name)

功能:让系统自动分配一个设备号,并注册

参数:

@dev      用来获得系统分配的设备号

@baseminor     第一个次设备号

@count     次设备号个数

@name     设备的名字

返回值:

成功返回0,失败返回负的错误码。

二、自动创建设备节点

06 字符设备(二)

标签:cal   占用   读写   ase   linux   require   register   sig   ssi   

原文地址:http://www.cnblogs.com/gaoningbo/p/6120072.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!