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相关推荐

  1. Alluxio : 开源分布式内存文件系统

    Alluxio : 开源分布式内存文件系统 Alluxio is a memory speed virtual distributed storage system.Alluxio是一个开源的基于内存 ...

  2. 内存文件系统-md伪设备

    md伪设备制作内存文件系统,这样访问速度快 使用系统中的伪设备md,这需要相应的内核支持"pseudo-device md",这个选项通常需要重新定制内核.这样使用新内核重新 启动 ...

  3. 分布式内存文件系统Alluxio

    分布式内存文件系统 alluxio 简介 简介 简单架构图 alluxio源码 https://gitee.com/pingfanrenbiji/alluxio.git 官方文档 https://do ...

  4. 分布式持久内存文件系统Octopus(ATC-17 )分析(二)

    清华课题 Octopus 源码分析(二) 前言 论文摘要 设计框架 源码分析 include 头文件 Configuration.hpp common.hpp bitmap.hpp debug.hpp ...

  5. 分布式持久内存文件系统Octopus(ATC-17 )分析(三)

    清华课题 Octopus 源码分析(三) 前言 论文摘要 设计框架 源码分析 include 头文件 src 源文件 fs 模块 net 模块 client 模块 tools 模块 文件依赖关系分析 ...

  6. 分布式持久内存文件系统Octopus(ATC-17 )分析(一)

    清华课题 Octopus 源码分析一 前言 论文摘要 设计框架 源码分析 清华课题 Octopus 源码分析(一) 前言 由于项目工作的需要,我们团队阅读了清华在文件系统方面的一个比较新颖的工作:Oc ...

  7. 分布式持久内存文件系统Octopus(ATC-17 )分析(五)

    清华课题 Octopus 源码分析(五) 前言 论文摘要 设计框架 src目录源码分析 fs 模块 TxManager.cpp filesystem.cpp 清华课题 Octopus 源码分析(五) ...

  8. 分布式持久内存文件系统Octopus(ATC-17 )分析(四)

    清华课题 Octopus 源码分析四 前言 论文摘要 设计框架 src目录源码分析 fs 模块 bitmapcpp lockcpp hashtablecpp storagecpp TxManagerc ...

  9. RTEMS文件系统(6):内存文件系统(上)

    %6 In-Memory Filesystem 本节描述了内存文件系统~(In-Memory Filesystem,IMFS).IMFS~是一个功能齐全的在内存中保存所有信息的~POSIX~文件系统. ...

最新文章

  1. Linux Centos 7 安装配置nginx
  2. Eclipse create git repository failure(egit)
  3. 阿里、百度、字节跳动、京东、地平线等计算机视觉实习生面试经历分析,已成功上岸!...
  4. 计算机事业单位专技岗考什么区别,事业单位管理和专技岗位有什么区别?哪个有前途?...
  5. 使用非常驻任务管理事件
  6. Linux下配置和安装VNCServer远程服务
  7. 父路径_Logtail 新功能:采集路径黑名单
  8. gRPC四种模式、认证和授权实战演示
  9. android源码包下载
  10. Linux虚拟化KVM-Qemu分析(六)之中断虚拟化
  11. 《网络攻防实践》 课程教学
  12. java 中如何临时保存某输入值_java笔记临时存放
  13. java语言有哪些优点
  14. itextpdf处理PDF,用文本域的方式
  15. 有没有一款手机桌面便签软件?真正好用的便签软件推荐
  16. 练习:使用Python爬取COVID-19疫情国内当日数据
  17. 百度微笑起航将人脸识别玩出新高度
  18. Telnet远程和tracert跟踪命令
  19. 小程序公众号的微信支付0.2%费率商户号是怎么降低的?
  20. Java8新特性——Optional 类

热门文章

  1. (转)iOS7界面设计规范(10) - UI基础 - 文字排版与配色
  2. .net中存储过程的应用
  3. gitlab升级-(一)安装一台旧版本
  4. 使用浏览器访问 Linux 终端的方法
  5. Silverlight C# 游戏开发:方向键的组合,八方向实现
  6. Hadoop控制输出文件命名
  7. premiere pr 波纹编辑 滚动编辑 比率拉伸 工具使用
  8. linux snap 进程cpu占用100% 解决
  9. python3 from import 与 import 区别
  10. shell 获取字符串/文件的MD5值