字符驱动设备中几个重要的结构体(cdev,file

 我来答
折柳成萌
高粉答主

2018-06-04 · 繁杂信息太多,你要学会辨别
知道顶级答主
回答量:4.4万
采纳率:96%
帮助的人:5991万
展开全部

1. cdev结构体

[cpp] view plain copy

  • struct cdev {  

  • struct kobject kobj; //内嵌的kobject对象  

  • struct module *owner; //所属模板  

  • const struct file_operations *ops; //文件操作的结构体  

  • struct list_head list;  

  • dev_t dev; //设备号  

  • unsigned int count;  

  • };  

  • 1.1 cdev的相关操作

    [cpp] view plain copy

  • void cdev_init(struct cdev *, const struct file_operations *); //初始化使其和文件操作结构相连接  

  • struct cdev *cdev_alloc(void); //为cdev分配内存  

  • int cdev_add(struct cdev *, dev_t, unsigned); //向内核注册一个设备  

  • void cdev_del(struct cdev *); //从内核删除一个设备  

  • 1.2 设备号的分配

    1.21 主次设备号和dev_t的相互转换

    由dev_t号获取主次设备号

    [cpp] view plain copy

  • MAJOR(dev_t dev)  

  • MINOR(dev_t dev)  

  • 由主次设备号获得dev_t

    [cpp] view plain copy

  • MKDEV(int major,int minor)  

  • 1.22 获取及注销设备号

    [cpp] view plain copy

  • <span style="font-size:14px;">int register_chrdev_region(dev_t from,unsigned count,const char *name); //手动注册  

  • int alloc_chrdev_region(dev_t *dev,unsigned baseminor,unsigned count,const char *name); //由内核分配  

  • void unregion_chrdev_region(dev_t from,unsigned count); //注销设备号</span>  

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式