Chinaunix首页 | 论坛 | 博客
  • 博客访问: 392812
  • 博文数量: 80
  • 博客积分: 1982
  • 博客等级: 上尉
  • 技术积分: 1737
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-26 22:41
文章存档

2013年(9)

2012年(71)

分类: LINUX

2012-11-07 16:07:10

    在 Linux 系统中,存在一类字符设备,它们共享一个主设备号(10),但次设备号不同,我们称这类设备为混杂设备(miscdevice)。所有的混杂设备形成一个链表,对设备访问时内核根据次设备号查找相应的 miscdeivce 设备。
    Linux 内核使用 struct miscdevice 来描述一个混杂设备。
struct miscdevice  {
    int minor;  /* 次设备号 */
    const char *name;  /* 设备名 */
    const struct file_operations *fops;  /* 文件操作 */

    struct list_head list;
    struct device *parent;
    struct device *this_device;
    const char *nodename;
    mode_t mode;
};

    Linux 内核使用 misc_register() 函数来注册一个混杂设备,
其主设备号为10,如果次设备号指定为 MISC_DYNAMIC_MINOR将由系统去指定一个次设备号misc_register() 函数中会调用 device_create() 为设备创建设备节点。
    misc_deregister() 用于注销这个混杂设备,其中调用了 device_destroy() 删除设备节点。
    混杂设备的核心是
drivers/char/misc.c 文件,该文件中的 misc_init() 函数调用 class_create() 函数创建了一个名 misc 的类,注册了一个主设备号为10,设备名为 misc 的字符设备。

                       ——忠于梦想 勇于实践    linux_xpj@opencores.org
阅读(1382) | 评论(0) | 转发(0) |
0

上一篇:Android JNI 开发环境

下一篇:设备ioctl控制

给主人留下些什么吧!~~