查看: 1913|回复: 0

[基础] 混杂设备驱动模型解析(一)

[复制链接]
  • TA的每日心情
    开心
    2014-1-27 10:34
  • 签到天数: 67 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 2017-8-10 10:36:49 | 显示全部楼层 |阅读模式
    分享到:
    TIM截图20170810103052.png
    1.混杂设备概念描述
    在Linux系统,存在一类设备字符设备,它们拥有相同的设备号10,但次设备号不同,我们称为混杂设备,是字符设备的一个分支,所有混杂涉笔形成一个链表,对设备访问时内核根据次设备号查找响应的混杂设备。
    linux驱动模
    型分多,但字符设备,混杂设备,网络设备都会使用一种结构来描述该设备。
    linux中使用struct miscdevice来描述混杂设备
    1.1初始化描述结构miscdevice
    1. struct miscdevice {
    2. int minor;//次设备号
    3. const char *name;//设备节点名
    4. const struct file_operations *fops;//混杂设备属于字符设备,因而填充file_operations结构体
    5. struct list_head list;
    6. struct device *parent;
    7. struct device *this_device;
    8. const char *nodename;
    9. mode_t mode;
    10. };
    复制代码
    1.2misc_register注册描述结构
    misc_register(&miscdevice)
    1.3注销描述结构
    misc_deregister(&miscdevice)
    混杂设备驱动模型简单实现代码
    1. #include<linux/module.h>
    2. #include<linux/init.h>
    3. #include<linux/miscdevice.h>

    4. int key_open(struct inode *node,struct file *filp)
    5. {
    6.     return 0;   
    7. }

    8. struct file_operations key_fops =
    9. {
    10.     .open = key_open,   
    11. };
    12. struct miscdevice key_miscdev = {

    13.     .minor = 200,//次设备号
    14.     .name = "mykey",//设备节点名称
    15.     .fops = &key_fops,//file_operations操作函数集
    16. };
    17. static int key_init()
    18. {

    19.     misc_register(&key_miscdev);//杂项设备描述结构的注册
    20.     return 0;
    21. }

    22. static void key_exit()
    23. {
    24.     misc_deregister(&key_miscdev);//杂项设备描述结构的注销
    25. }

    26. module_init(key_init);
    27. module_exit(key_exit);
    复制代码
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条



    手机版|小黑屋|与非网

    GMT+8, 2025-1-12 13:41 , Processed in 0.113891 second(s), 18 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.