Chinaunix首页 | 论坛 | 博客

分类: 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
阅读(1350) | 评论(0) | 转发(0) |
0

上一篇:Android JNI 开发环境

下一篇:设备ioctl控制

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