
字符设备驱动
文章平均质量分 61
iczyh
这个作者很懒,什么都没留下…
展开
-
字符设备文件的创建
一个字符设备文件是通过用户程序 mknod 来创建,mknod 程序依靠同名系统调用 mknod 来完成。在内核的 sys_mknod() 函数中,当根据传入的参数判断出需要创建的节点是设备文件时,会调用 vfs_mknod() 来完成。根据所要创建的节点所在的不同的文件系统,vfs_mknod() 会通过 inode_operations 结构中的函数指针调用每种文件系统上相应的方法。对于 ex原创 2008-11-22 20:01:00 · 2926 阅读 · 0 评论 -
字符设备编号的注册分配
内核中所有已分配的字符设备编号都记录在一个名为 chrdevs 散列表里。该散列表中的每一个元素是一个 char_device_struct 结构,它的定义如下: static struct char_device_struct { struct char_device_struct *next; // 指向散列冲突链表中的下一个元素的指针 unsigned原创 2008-11-24 21:44:00 · 1440 阅读 · 0 评论 -
字符设备的注册
内核中每个字符设备都对应一个 cdev 结构的变量,下面是它的定义:struct cdev { struct kobject kobj; // 每个 cdev 都是一个 kobject struct module *owner; // 指向实现驱动的模块 const struct file_operations *ops; // 操纵这个字符原创 2008-11-25 22:16:00 · 1042 阅读 · 0 评论 -
字符设备文件的打开
打开字符设备文件,还是通过 sys_open() 系统调用。在经过一连串的调用后,内核会走到 __dentry_open() 函数。在这个函数中,执行了以下代码片段:f->f_op = fops_get(inode->i_fop);open = f->f_op->open;error = open(inode, f);其中,f 是 struct file 型的指针,open 是一个函数指针。所以这原创 2008-11-27 21:20:00 · 1692 阅读 · 0 评论