Linux 内核kobject 缺省属性】的更多相关文章

当被创建时, 每个 kobject 被给定一套缺省属性. 这些属性通过 kobj_type 结构来指定. 这个结构, 记住, 看来如此: struct kobj_type { void (*release)(struct kobject *); struct sysfs_ops *sysfs_ops; struct attribute **default_attrs; }; default_attr 成员列举了对每个这样类型的 kobject 被创建的属性, 并且 sysfs_ops 提供方法来…
在许多情况中, kobject 类型的 default_attrs 成员描述所有的 kobject 会拥有的属性. 但是那不是一个设计中的限制; 属性随意可以添加到和删除自 kojects. 如果你想添加一 个新属性到一个 kobject 的 sysfs 目录, 简单地填充一个属性结构并且传递它到: int sysfs_create_file(struct kobject *kobj, struct attribute *attr); 如果所有都进行顺利, 文件被使用在属性结构中给定的名字创建,…
1.前言 Linux内核中有大量的驱动,而这些驱动往往具有类似的结构,根据面向对象的思想,可以将共同的部分提取为父类,而这个父类就是kobject,kobject结构体中包含了大量设备的必须信息,而三大类设备驱动都需要包含这个kobject结构,运用面向对象的思想来看问题,也就是继承来自kobject,一个kobject对象往往就对应sysfs中的一个目录,kobject是组成设备模型的基本结构,kobject需要处理的基本任务有如下: (1)对象的引用计数 当一个内核对象被创建时,不可能知道对…
本书已经展示了许多数据类型, 带有简单的在编译或者运行时初始化机制. 一个 kobject 的初始化有些复杂, 特别当使用它的所有函数时. 不管一个 kobject 如何使用, 但是, 必须进行几个步骤. 这些步骤的第一个是仅仅设置整个 kobject 为 0, 常常使用一个对 memset 的调用. 常 常这个初始化作为清零这个 kobjiect 嵌入的结构的一部分. 清零一个 kobject 失败导 致非常奇怪的崩溃, 进一步会掉线; 这不是你想跳过的一步. 下一步是设立一些内部成员, 使用…
kobject 结构常常用来连接对象到一个层级的结构中, 匹配正被建模的子系统的结构. 有 2 个分开的机制对于这个连接: parent 指针和 ksets. 在结构 kobject 中的 parent 成员是一个指向其他对象的指针 -- 代表在层次中之上的 下一级. 如果, 例如, 一个 kobject 表示一个 USB 设备, 它的 parent 指针可能指示这 个设备被插入的 hub. parent 指针的主要用途是在 sysfs 层次中定位对象. 我们将看到这个如何工作, 在"低 级 s…
#define __init __attribute__ ((__section__ (".init.text")))…
定时器和时间管理 系统中有很多与时间相关的程序(比如定期执行的任务,某一时间执行的任务,推迟一段时间执行的任务),因此,时间的管理对于linux来说非常重要. 主要内容: 系统时间 定时器 定时器相关概念 定时器执行流程 实现程序延迟的方法 定时器和延迟的例子 1. 系统时间 系统中管理的时间有2种:实际时间和定时器. 1.1  实际时间 实际时间就是现实中钟表上显示的时间,其实内核中并不常用这个时间,主要是用户空间的程序有时需要获取当前时间,所以内核中也管理着这个时间.实际时间的获取是在开机后…
最近太忙,居然过了2个月才更新第十四章.... 主要内容: 块设备简介 内核访问块设备的方法 内核I/O调度程序 1. 块设备简介 I/O设备主要有2类: 字符设备:只能顺序读写设备中的内容,比如 串口设备,键盘 块设备:能够随机读写设备中的内容,比如 硬盘,U盘 字符设备由于只能顺序访问,所以应用场景也不多,这篇文章主要讨论块设备. 块设备是随机访问的,所以块设备在不同的应用场景中存在很大的优化空间. 块设备中最重要的一个概念就是块设备的最小寻址单元. 块设备的最小寻址单元就是扇区,扇区的大小…
 从linux内核中学到的编程技巧  分类: LINUX 1构建泛型宏 (./linux/include/linux/kernel.h) #define min(x, y) ({ \ typeof(x) _min1 = (x); \ typeof(y) _min2 = (y); \ (void) (&_min1 == &_min2); \ _min1 < _min2 ? _min1 : _min2; }) 大家看了就明白是什么意思了.但是我还有几点疑问:(1)(void) (&…
https://www.ibm.com/developerworks/cn/linux/l-gcc-hacks/ GCC 和 Linux 是出色的组合.尽管它们是独立的软件,但是 Linux 完全依靠 GCC 在新的体系结构上运行.Linux 还利用 GCC 中的特性(称为扩展)实现更多功能和优化.本文讨论一些重要的扩展,讲解如何在 Linux 内核中使用它们. GCC 当前的稳定版本(版本 4.3.2)支持 C 标准的三个版本: International Organization for S…