scull设备

scull在ldd3这本书中是这么介绍的:

从一个真实设备驱动提取的代码片段, scull 是一个字符驱动, 操作一块内存区域好像它是一个设备.scull 的优势在于它不依赖硬件. scull 只是操作一些从内核分配的内存.这个设备除了演示内核和字符驱动的接口和允许用户运行一些测试之外, 不做任何有用的事情.

scull的作用是当用户申请内存空间时,只有用户写时才需要申请内存,这就存在零散的内存区域,也需要管理这些区域,即出现了scull中scull_dev,scull_qset数据结构。


裸设备是一个可变长度的内存区,使用一个间接块链表。


scull_dev->data指向一个指针数组,这个数组(quantum-set,量子集)有SCULL_QSET那么长,每个指针指向一个SCULL_QUANTUM字节的内存区。

                             也就是一个scull_dev->data指向的空间可存储内容为SCULL_QSET*SCULL_QUANTUM个字节。


pipe是一二简单的循环缓冲区,默认值是4000字节。


struct scull_dev {

        struct scull_qset *data;  /* 指向第一个量子集*/
        int quantum;              /* 当前量子大小the current quantum size */
        int qset;                 /* 当前数组大小the current array size */
        unsigned long size;       /* 当前可存储数据amount of data stored here */
        unsigned int access_key;  /* 可由 sculluid(一次只能是一个用户使用)和scullpriv (scullpriv 对每个虚拟终端(或者 X 终端会话)是私有的)使用*/
        struct semaphore sem;     /* 互斥信号量     */
        struct cdev cdev;         /* 字符设备结构             */


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值