对于scull设备的理解
来源:互联网 发布:紫光国芯 知乎 编辑:程序博客网 时间:2024/05/18 03:06
昨天完成了第三章,但是脑子里总是感觉对scull还达不到透彻的理解。昨天睡觉前又想了想这个设备,现在试试以下的理解看可不可以。
1)scull是一个设备;
2)这个设备通过一个结构体scull_dev描述。
3)scull_dev有7个成员,其中
struct qset *data,指向一个用来存储数据的链表,我们把这个链表的每一个节点称为一个量子集,那么data就是这个由n个量子集构成的链表的头指针;
int quantum,描述量子集中每个量子的大小,通常默认为4000字节;
int qset,描述量子集中量子的数量,通常默认为1000个;
unsigned long size,保存在其中的数据总量;//没理解透
unsigned int access_key;由sculluid和scullpriv使用;//没理解透
struct semaphore sem;互斥信号量;//没理解透
struct cdev cdev,一个字符设备,用来描述该设备。
struct qset
{
void **data; //指向量子集的首元素,因为量子是一个存储空间,需要void *描述;所以指向量子集需要类型void **
struct qset *next; //下一个节点
};
//在<linux/cdev.h>中描述
struct cdev {
struct kobject kobj;
struct module *owner;
const struct file_operations *ops;
struct list_head list;
dev_t dev;
unsigned int count;
};
void cdev_init(struct cdev *, const struct file_operations *);//使用struct file_operations结构的常量来初始化cdev结构体.
struct cdev *cdev_alloc(void);//为cdev指针分配一个结构体空间
void cdev_put(struct cdev *p);//
int cdev_add(struct cdev *, dev_t, unsigned); //将你的设备模块关联到内核上。设备被激活了.参数:设备结构体,设备号,有多少设备会使用这个驱动。
void cdev_del(struct cdev *);//从系统内核上除去设备模块。
void cd_forget(struct inode *);//
1)scull是一个设备;
2)这个设备通过一个结构体scull_dev描述。
3)scull_dev有7个成员,其中
struct qset *data,指向一个用来存储数据的链表,我们把这个链表的每一个节点称为一个量子集,那么data就是这个由n个量子集构成的链表的头指针;
int quantum,描述量子集中每个量子的大小,通常默认为4000字节;
int qset,描述量子集中量子的数量,通常默认为1000个;
unsigned long size,保存在其中的数据总量;//没理解透
unsigned int access_key;由sculluid和scullpriv使用;//没理解透
struct semaphore sem;互斥信号量;//没理解透
struct cdev cdev,一个字符设备,用来描述该设备。
struct qset
{
void **data; //指向量子集的首元素,因为量子是一个存储空间,需要void *描述;所以指向量子集需要类型void **
struct qset *next; //下一个节点
};
//在<linux/cdev.h>中描述
struct cdev {
struct kobject kobj;
struct module *owner;
const struct file_operations *ops;
struct list_head list;
dev_t dev;
unsigned int count;
};
void cdev_init(struct cdev *, const struct file_operations *);//使用struct file_operations结构的常量来初始化cdev结构体.
struct cdev *cdev_alloc(void);//为cdev指针分配一个结构体空间
void cdev_put(struct cdev *p);//
int cdev_add(struct cdev *, dev_t, unsigned); //将你的设备模块关联到内核上。设备被激活了.参数:设备结构体,设备号,有多少设备会使用这个驱动。
void cdev_del(struct cdev *);//从系统内核上除去设备模块。
void cd_forget(struct inode *);//
- 对于scull设备的理解
- 理解scull设备
- scull设备的使用
- scull设备的使用
- scull设备的使用
- scull字符设备
- 对于LINUX内核tty设备的一点理解
- 对于Linux内核tty设备的一点理解
- 对于Linux内核tty设备的一点理解
- 对于Linux内核tty设备的一点理解
- 对于Linux内核tty设备的一点理解
- 对于Linux内核tty设备的一点理解
- 对于Linux内核tty设备的一点理解
- Scull字符设备驱动模块的内存使用分析
- ldd3-3-scull.1设备的加载卸载
- ldd3-3-scull.2设备的读写操作(失败)
- ldd3 scull代码理解
- 《Linux设备设备驱动程序(第三版)》学习笔记之一:scull设备的使用
- 在Resin3下配置SpringSide的HelloWorld示例程序碰到的问题和解决方法(说白了还是resin3.0解析xml问题)
- C语言时间函数
- FTP的ASCII和Binary两种传输方式有何不同
- 通过反射获取类的所有属性和方法
- CL_GUI_FRONTEND_SERVICES 客户端系统的操作
- 对于scull设备的理解
- 用jmail收邮件
- OpenGL ES学习笔记之二
- OpenGL ES学习笔记之三
- 讲述如何成为一名合格的DBA
- 如何在Visual Studio 2005或者Visual Studio 2008里实现拖动控件进行绝对定位?
- FCKeditor 2.3 在ASP.NET中的设置和使用
- 在Opera浏览器中,把页面字体变为微软雅黑的方法
- 蓝牙1.1、1.2、2.0等各版介绍与对比