Linux那些事儿 之 我是Sysfs
fudan_abc
这个作者很懒,什么都没留下…
展开
-
Linux那些事儿之我是Sysfs(4)举例一lddbus
对了,你得把ldd3的examples代码下下来。不然没法继续了。接下来我们从例子着手,localhost:/home/XX/examples/lddbus#insmod lddbus.ko此时再看/sys/bus/ 这时就多了一个文件夹ldd。里面的文件构成是这样的/sys/bus/ldd/|--device|--driver`--versionlocalhost:/sys/bus/ldd#原创 2007-09-01 16:12:00 · 18919 阅读 · 3 评论 -
Linux那些事儿之我是Sysfs(13)举例四:sysfs读入普通文件内容
跟上回一样,我用这个小程序来读#include stdio.h>#include fcntl.h>#include unistd.h>int main()...{ char *name = "/sys/bus/ldd/version"; char buf[500]; int fd; in原创 2007-09-14 17:57:00 · 7320 阅读 · 0 评论 -
Linux那些事儿之我是Sysfs(12)举例三:sysfs读入文件夹内容
上回我们说到,如何创建文件夹和文件。我们发现,在sysfs中,inode并不那么重要。这是因为我们所要读写的信息已经就在内存中,并且已经形成了层次结构。我们只需有dentry,就可以dentry->fsdata,就能找到我们读些信息的来源 --- sysfs_dirent结构。这也是我觉得有必要研究 sysfs的原因之一,因为它简单,而且不涉及具体的硬件驱动,但是从这个过程中,我们可以把文件系统原创 2007-09-13 16:24:00 · 8000 阅读 · 0 评论 -
Linux那些事儿之我是Sysfs(11)sysfs 创建普通文件
最近彭宇的案件炒得沸沸扬扬,究竟这个社会怎么了?sysfs文件系统中,普通文件对应于kobject中的属性。用sysfs_create_file(),参数如下:sysfs_create_file(struct kobject * kobj, const struct attribute * attr) 传给它的参数是kobj和attr,其中,kobject对应的是文件夹,attribu原创 2007-09-12 21:15:00 · 11188 阅读 · 1 评论 -
Linux那些事儿之我是Sysfs(7)dentry与inode
我们在进程中要怎样去描述一个文件呢?我们用目录项(dentry)和索引节点(inode)。它们的定义如下:struct dentry {struct inode *d_inode; /* Where the name belongs to - NULL isstruct dentry原创 2007-09-06 22:09:00 · 18064 阅读 · 2 评论 -
Linux那些事儿之我是Sysfs(10)sysfs 创建目录
每当我们新增一个kobject结构的时候,同时会在/sys下创建一个目录。kobject_add() -> create_dir() -> sysfs_create_dir()此时,我还想重申,kernel代码的更新换代是很快的,我们的目的是懂得代码背后的原理,知识,或曰哲学。我不想讲的太细,因为关于sysfs的部分从2.6.10到现在2.6.22已经改了很多了。但其总体架构没变。写此原创 2007-09-11 18:57:00 · 8748 阅读 · 0 评论 -
Linux那些事儿之我是Sysfs(9)sysfs文件系统模型
最近Linus炮轰C++,“C++是一种糟糕的(horrible)语言。而且因为有大量不够标准的程序员在使用而使许多真正懂得底层问题,而不会折腾那些白痴‘对象模型’”。牛人就是牛气冲天阿。在fs/sysfs/下面,除去makefile,还有8个文件。其中, bin.c, file.c, dir.c, symblink.c分别代表了在sysfs文件系统中当文件类型为二进制文件,普通文件,目录,符原创 2007-09-09 23:04:00 · 10442 阅读 · 0 评论 -
Linux那些事儿之我是Sysfs(8)一起散散步-pathwalk
前面说过,只要知道文件的索引节点号,就可以得到那个文件。但是我们在操作文件时,从没听说谁会拿着索引节点号来操作文件,我们只知道文件名而已。它们是如何"和谐"起来的呢?linux把目录也看成一种文件,里面记录着文件名与索引节点号的对应关系。比如在ext3文件系统中,如果文件是一个目录,那么它的内容就是一系列ext3_dir_entry_2的结构struct ext3_dir_entry_2 {_原创 2007-09-07 21:00:00 · 9654 阅读 · 1 评论 -
Linux那些事儿之我是Sysfs(6)文件系统
接下来,我们进入sysfs部分。看看kobject_add()->create_dir()->sysfs_create_dir()bus create file->sysfs create file(). . .这些sysfs函数的内幕。说白了,sysfs就是利用VFS的接口去读写kobject的层次结构,建立起来的文件系统。关于sysfs的内容就在fs/sysfs/下。 kobject的层次结构原创 2007-09-03 22:54:00 · 9834 阅读 · 0 评论 -
Linux那些事儿之我是Sysfs(2)linux设备底层模型
关于linux设备模型网上有一些论述,有些东西我就用了拿来主义,进行了修改和整理。§1 KobjectKobject 是Linux 2.6引入的新的设备管理机制,在内核中由struct kobject表示。通过这个数据结构使所有设备在底层都具有统一的接口,kobject提供基本的对象管理,是构成Linux2.6设备模型的核心结构,它与sysfs文件系统紧密关联,每个在内核中注册的kobject原创 2007-09-01 14:58:00 · 24921 阅读 · 8 评论 -
Linux那些事儿之我是Sysfs(1)sysfs初探
"sysfs is a ram-based filesystem initially based on ramfs. It provides a meansto export kernel data structures, their attributes, and the linkages between them touserspace.” --- documentation/filesyst原创 2007-09-01 14:21:00 · 30710 阅读 · 4 评论 -
Linux那些事儿之我是Sysfs(3)设备模型上层容器
§1 bus系统中总线由struct bus_type描述,定义为:struct bus_type {char * name; 总线类型的名称struct subsystem subsys; 与该总线相关的subsystemstruct kset drivers; 所有与该总线相关的驱动程序集合struct kset devices; 所有挂接在该总线上的设备集合struct bus attrib原创 2007-09-01 15:20:00 · 16919 阅读 · 5 评论 -
Linux那些事儿之我是Sysfs(5)举例二sculld
不妨再把sculld的代码也分析一下,先看初始函数sculld_init() -> register_ldd_driver() ->driver_register() ->bus_add_driver() -> reg原创 2007-09-01 16:33:00 · 12755 阅读 · 3 评论 -
Linux那些事儿之我是Sysfs(final)后记
关于sysfs的介绍就到这里。文笔不如大哥甲幽默,希望我写的这些咚咚对大家有所启发,帮助。把东西看懂是一回事,写出来又是另一回事。写到想吐血...但是写得过程中,可以使自己的理解更深一层,更有逻辑。授人以鱼不如授人以渔,学习linux内核最好的方法就是Reading the f**king source code。 推荐用source insight看代码,外加KDB调试,挺方便原创 2007-09-14 20:05:00 · 7618 阅读 · 16 评论