LDD3 D23 01.23 星二

  • 21:20-22:05 20p

    【没读明白,设备模型的用途。以及怎样实现自己驱动程序的设备模型】

     

    第十四章 Linux 设备模型

     

    设备模型使得操作系统能按照一个正确顺序遍历硬件。

    通过sysfs,设备模型用用户空间提供系统信息。

    通过设备模型支持热插拔

    设备模型包括一个机制来给设备分配类别, 它在一个更高的功能性的级别上描述了这些设备, 并且允许它们对用户空间可见.

    设备模型的实现要求创建一套机制来处理对象生命期,

     

    Kobjects, Ksets 和 Subsystems

    Kobject 是基础的结构, 起初,它被作为一个简单的引用计数。现在功能更复杂了。包括:

    • 对象的引用计数
    • sysfs 表示
    • 数据结构关联
    • 热插拔事件处理

     

    kobject 基础知识

    嵌入的kobject

    如果你看看被 kobjects 处理的函数列表, 你会发现它们都是代表其他对象进行的服务. 换句话说, kobject对其自己很少感兴趣; 它存在仅仅是为了把一个高级对象连接到设备模型.

    【Q怎样理解?】

     

    C 语言不允许直接表达继承, 因此使用 将一个结构嵌入另一个结构

    【编程技巧】

     

    使用 kobjects 的代码常常遇到一个问题, 需要从 kobjects的指针,访问包含这个指针的父级结构。应当使用 container_of 宏 (在第 3 章的"open 方法"一节中介绍的).

     

    kobject 初始化

    首先设置整个 kobject 为 0,避免遇到奇怪的问题

    然后 调用:

    void kobject_init(struct kobject *kobj);

    接着使用下面这个函数,给name 赋值

    int kobject_set_name(struct kobject *kobj, const char *format, ...);

     

    对引用计数的操作

    struct kobject *kobject_get(struct kobject *kobj);

    void kobject_put(struct kobject *kobj);

    必须检查返回值并作出相应的处理

     

    当kobject继续被使用时,不能卸载该模块。

     

    release()函数和 kobject 类型

    一个被 kobject 保护的结构无法在任何一个单个的, 可预测的驱动生命周期中的时间点被释放

    【Q什么意思?】

     

     kobject 层次, kset, 和子系统

    【没读懂】

     

    底层sysfs操作

    kobject 是在 sysfs 虚拟文件系统之后的机制. 对每个在 sysfs 中发现的目录, 有一个 kobject 潜伏在内核某处.

     

    热插拔事件

    一个热插拔事件是一个从内核到用户空间的通知

     

    总线, 设备, 和驱动

    【没读懂】

     

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值