Linux那些事儿之我是Sysfs(9)sysfs文件系统模型
最近Linus炮轰C++,“C++是一种糟糕的(horrible)语言。而且因为有大量不够标准的程序员在使用而使许多真正懂得底层问题,而不会折腾那些白痴‘对象模型’”。牛人就是牛气冲天阿。
在fs/sysfs/下面,除去Makefile和Kconfig,还有6个文件。其中file.c, dir.c, symblink.c分别代表了在sysfs文件系统中当文件类型为普通文件,目录,符号连接时的各自的file operations结构体的实现。mount.c包括了sysfs的初始化函数。sysfs.h就是头文件,里面有函数的原形,并将其extern出去。
sysfs的文件系统的所读写的信息是存放在kobject当中,那么dentry是如何与kobject联系起来的呢?是通过kernfs_node。
sysfs文件系统有自己的dirent结构,dirent = directory entry (目录实体)。sysfs中,每一个dentry对应了一个dirent结构,dentry->d _fsdata是一个void的指针,它指向kernfs_node 结构。
include/linux/kernfs.h
struct kernfs_node {
atomic_t count;
atomic_t active;
#ifdef CONFIG_DEBUG_LOCK_ALLOC
struct lockdep_map dep_map;
#endif
/*
* Use kernfs_get_parent() and kernfs_name/path() instead of
* accessing the following two fields directly. If the node is
* never moved to a different parent, it is safe to access the
* parent directly.
*/
struct kernfs_node *parent;
const char *name;
struct rb_node rb;
const void *ns; /* namespace tag */
unsigned int hash; /* ns + name hash */
union {
struct kernfs_elem_dir dir;
struct kernfs_elem_symlink symlink;
struct kernfs_elem_attr attr;
};
void *priv;
unsigned short flags;
umode_t mode;
unsigned int ino;
struct kernfs_iattrs *iattr;
};
count是引用计数。
Linux那些事儿之我是Sysfs(9)sysfs文件系统模型相关推荐
- Linux设备之我是usb,linux那些事儿之我是usb
linux那些事儿之我是usb,复旦大学教授肖林甫先生给学生们解说的linux操作系统的一些硬件驱动开发的事儿. 内核说明: 我是U盘 说的是2.6.10的内核 我是Sysfs 说的是2.6.10的内 ...
- 读书笔记《Linux那些事儿之我是USB》
第一篇:Linux那些事儿之我是USB Core USB诞生于inel 产生是为了解决前期计算机并口串口的问题,实现一种解决速度,扩展性,易用性的通信方式. 速度:usb2.0高速模式,480MB/s ...
- Linux系统USB驱动目录,Linux那些事儿之我是USB 目录
目录 第1篇 Linux那些事儿之我是USB Core 1.引子 2 2.它从哪里来 2 3.PK 3 4.漫漫辛酸路 3 5.我型我秀 4 6.我是一棵树 5 7.我是谁 9 8.好戏开始了 11 ...
- linux 那些事儿之我是 u 盘,《Linux那些事儿之我是USB》.PDF
<Linux 那些事儿之我是 USB> 作者:华清远见 第 1 章 Linux 那些事儿之我是 USB Core 专业始于专注 卓识源于远见 1 .引子 老夫子们痛心疾首地总结说,现代青年 ...
- 《Linux那些事儿之我是USB》我是U盘(1)小城故事
这个故事中使用的是2.6.22的内核代码.在Linux内核代码目录中,所有与设备驱动程序有关的代码都在drivers/目录下面,在这个目录中用ls命令可以看到很多子目录: lfg1:/usr/src/ ...
- Linux那些事儿之我是Hub(9)While You Were Sleeping(二)
老实说,从函数一个开始的598行直到627行都没有什么可说的.其中需要一提的是,606行,调用usb_buffer_alloc()申请内存,赋给hub->buffer.614行,调用kmallo ...
- 《Linux那些事儿之我是USB》我是U盘(4)想到达明天现在就要启程
既然知道了编写模块的方法,那么编写设备驱动程序自然也就不难了.我相信,每一个会写模块的人都不会觉得写设备驱动有困难. 真的,我没说假话,写驱动不是什么难事,你完全可以很自信地说,你已经可以写 设备驱动 ...
- Linux那些事儿之我是Sysfs(11)sysfs 创建普通文件
sysfs文件系统中,普通文件对应于kobject中的属性.用sysfs_create_file(),参数如下: sysfs_create_file(struct kobject * kobj, co ...
- Linux那些事儿之我是Sysfs(8)一起散散步-pathwalk
前面说过,只要知道文件的索引节点号,就可以得到那个文件.但是我们在操作文件时,从没听说谁会拿着索引节点号来操作文件,我们只知道文件名而已.它们是如何"和谐"起来的呢?linux把目 ...
最新文章
- 安装QCreator2.5+Qt4.8.2+MinGW_gcc_4.4
- Java开发工具(Eclipse中内容辅助键的使用)
- Win7_Wifi热点
- 使用复合设计模式扩展持久化的CURD,Select能力
- kafka消息存储格式
- 没得玩了!腾讯这款游戏宣布将于12月15日停服
- Python3内置模块2-logging(转)
- linux eof打印列表,Linux:结合cat和EOF输出到文本文件
- 【TODO】每日时间工作总结记录模板
- eclipse 2018 安装html、jsp、JavaScript编辑器
- 删除Windows 7系统保留分区100MB
- IT战略规划,我们在做什么?(上)
- 基于生长的棋盘格角点检测方法 代码介绍
- 【Pygame小游戏】魂斗罗经典BOSS都回来了 准备好再次击败他们了吗?(附源码)
- CI Weekly #21 | iOS 持续集成快速入门指南
- 【tool】动态注释LOG_NDEBUG宏定义
- 云南大学计算机学院导师信息,云南大学软件学院研究生导师介绍:姚绍文(教授,博士生导师)...
- python闭包,自由变量
- 双斜齿轮-市场现状及未来发展趋势
- Python之数据处理与可视化
热门文章
- wx.getLocation 的使用
- Manifest merger failed : uses-sdk:minSdkVersion 15 cannot be smaller than version 16 declared in lib
- GridView使用的技巧
- Dubbo 18 问
- leetcode-20 valid-parentheses(有效的括号)
- 用Micro:bit做浇灌系统
- 搜索引擎ElasticSearchV5.4.2系列二之ElasticSearchV5.4.2+kibanaV5.4.2+x-packV5.4.2安装
- Dubbo的使用及原理浅析.
- c语言常用数据类型转换整理
- Java Web项目结构