内存文件系统——sysfs
sysfs是一个内存虚拟文件系统,提供了一个kobject层次结构的视图。sysfs根目录下包含至少10个目录:
l block:该目录包含了系统中注册的每个块设备对应的目录。这些目录中包含了块设备的任何分区。
l bus:该目录提供了系统总线的一个视图。
l class:该目录包含了按高级功能组织的系统中所有设备的一个视图。
l dev:该目录是已注册设备结点的一个视图。
l devices:该目录是系统设备的拓扑视图。它直接映射了内核中的设备层次结构。
l firmware:该目录包含了低层子系统如ACPI,EDD,EFI等等系统特定的树。
l fs:包含了已注册的文件系统的一个视图。
l kernel:该目录包含了内核配置选项和状态信息。
l modules:该目录包含了系统加载的模块的一个视图。
l power:该目录包含了系统范围内的电量管理数据。
从sysfs中添加和删除kobjects
初始化一个kobject,并将其导出到sysfs使用如下函数:
int kobject_add(struct kobject *kobj, struct kobject *parent, const char *fmt, ...);
一个kobject代表sysfs中的一个目录,如果父指针不为空,则它代表该父kobject对应目录下的一个子目录。struct kobject * kobject_create_and_add(const char *name, struct kobject *parent);该函数是一个辅助函数,它将kobject_create()和kobject_add()两个函数操作合为一个函数。
删除一个kobject对应的sysfs表示是通过函数void kobject_del(struct kobject *kobj);来进行的。
向sysfs中增加文件
kobject映射为目录,而它的属性则映射为文件。
默认属性
struct attribute {
const char *name; /* attribute’s name */
struct module *owner; /* owning module, if any */
mode_t mode; /* permissions */
};
sysfs_ops描述了怎样使用默认属性。
struct sysfs_ops {
/* method invoked on read of a sysfs file */
ssize_t (*show) (struct kobject *kobj,
struct attribute *attr,
char *buffer);
/* method invoked on write of a sysfs file */
ssize_t (*store) (struct kobject *kobj,
struct attribute *attr,
const char *buffer,
size_t size);
};
创建新属性
通常,默认属性已经足够了,然而,有时有些kobject比较特殊,需要提供一些特殊的
数据或功能。内核提供如下接口:
int sysfs_create_file(struct kobject *kobj, const struct attribute *attr);
当然,也可以创建文件链接,接口如下:
int sysfs_create_link(struct kobject *kobj, struct kobject *target, char *name);
销毁属性
对应于属性创建函数,有两个属性销毁接口:
void sysfs_remove_file(struct kobject *kobj, const struct attribute *attr);
void sysfs_remove_link(struct kobject *kobj, char *name);
转载于:https://my.oschina.net/fuyajun1983cn/blog/263846
内存文件系统——sysfs相关推荐
- Alluxio : 开源分布式内存文件系统
Alluxio : 开源分布式内存文件系统 Alluxio is a memory speed virtual distributed storage system.Alluxio是一个开源的基于内存 ...
- 内存文件系统-md伪设备
md伪设备制作内存文件系统,这样访问速度快 使用系统中的伪设备md,这需要相应的内核支持"pseudo-device md",这个选项通常需要重新定制内核.这样使用新内核重新 启动 ...
- 分布式内存文件系统Alluxio
分布式内存文件系统 alluxio 简介 简介 简单架构图 alluxio源码 https://gitee.com/pingfanrenbiji/alluxio.git 官方文档 https://do ...
- 分布式持久内存文件系统Octopus(ATC-17 )分析(二)
清华课题 Octopus 源码分析(二) 前言 论文摘要 设计框架 源码分析 include 头文件 Configuration.hpp common.hpp bitmap.hpp debug.hpp ...
- 分布式持久内存文件系统Octopus(ATC-17 )分析(三)
清华课题 Octopus 源码分析(三) 前言 论文摘要 设计框架 源码分析 include 头文件 src 源文件 fs 模块 net 模块 client 模块 tools 模块 文件依赖关系分析 ...
- 分布式持久内存文件系统Octopus(ATC-17 )分析(一)
清华课题 Octopus 源码分析一 前言 论文摘要 设计框架 源码分析 清华课题 Octopus 源码分析(一) 前言 由于项目工作的需要,我们团队阅读了清华在文件系统方面的一个比较新颖的工作:Oc ...
- 分布式持久内存文件系统Octopus(ATC-17 )分析(五)
清华课题 Octopus 源码分析(五) 前言 论文摘要 设计框架 src目录源码分析 fs 模块 TxManager.cpp filesystem.cpp 清华课题 Octopus 源码分析(五) ...
- 分布式持久内存文件系统Octopus(ATC-17 )分析(四)
清华课题 Octopus 源码分析四 前言 论文摘要 设计框架 src目录源码分析 fs 模块 bitmapcpp lockcpp hashtablecpp storagecpp TxManagerc ...
- RTEMS文件系统(6):内存文件系统(上)
%6 In-Memory Filesystem 本节描述了内存文件系统~(In-Memory Filesystem,IMFS).IMFS~是一个功能齐全的在内存中保存所有信息的~POSIX~文件系统. ...
最新文章
- Linux Centos 7 安装配置nginx
- Eclipse create git repository failure(egit)
- 阿里、百度、字节跳动、京东、地平线等计算机视觉实习生面试经历分析,已成功上岸!...
- 计算机事业单位专技岗考什么区别,事业单位管理和专技岗位有什么区别?哪个有前途?...
- 使用非常驻任务管理事件
- Linux下配置和安装VNCServer远程服务
- 父路径_Logtail 新功能:采集路径黑名单
- gRPC四种模式、认证和授权实战演示
- android源码包下载
- Linux虚拟化KVM-Qemu分析(六)之中断虚拟化
- 《网络攻防实践》 课程教学
- java 中如何临时保存某输入值_java笔记临时存放
- java语言有哪些优点
- itextpdf处理PDF,用文本域的方式
- 有没有一款手机桌面便签软件?真正好用的便签软件推荐
- 练习:使用Python爬取COVID-19疫情国内当日数据
- 百度微笑起航将人脸识别玩出新高度
- Telnet远程和tracert跟踪命令
- 小程序公众号的微信支付0.2%费率商户号是怎么降低的?
- Java8新特性——Optional 类