一、proc文件系统
proc文件系统常常被放置于Linux系统的/proc目录下,常常用于查看有关硬件、进程的状态,可以通过
操作proc文件系统进行控制工作
在include/proc_fs.h中,定义创建proc文件系统的函数
extern struct proc_dir_entry *create_proc_entry(const char *name,mode_t mode,struct proc_dir_entry *praent);
struct proc_dir_entry *proc_create_data(const char *name ,mode_t mode,const struct file_operations *proc_fops,void *data);
extern void remove_proc_entry(const char *name,structproc_dir_entry*parent)
二、sys文件系统
sys文件系统是linux内核中设计的脚心的一种基于内存的文件系统,它的作用于proc有些相似,但是除了鱼proc相同的具有查看和设定内核参数
功能之外,还有位linux同意设备模型作为管理之用
sys文件系统只有读和写两个接口,比较简单,因此不能支持复杂的操作,例如:复杂的参数传递,大规模数据块操作等
sys文件系统被挂接到linux文件系统的/sys目录中,各个项目的内容如下:
/sys/block:系统中当前所有的块设备所在
/sys/bus:这是内核设备按总线类型分层放置的内核结构,device的所有设备都连接于某种总线之下
/sys/class:这是按照设备功能分类的设备模型
/sys/devices:内核对系统中所有设备的分层次表达模型
/sys/dev:字符设备和块设备的主次号,连接到真正的设备(/sys/devices)中
/sys/fs:按照设计是用于描述系统中所有文件系统
/sys/kernel:内核所有可调整的参数的位置
/sys/module:系统中所有模块的信息
/sys/power:系统中电源管理
可以通过sys文件系统操作其中的文件实现两方面的功能:
显示信息:可以通过cat命令
控制:可以通过cat命令或者echo命令实现。使用重定向的方式输入
例如 查看系统所支持的各种休眠模式的命令:cat /sys/power/state
控制进入休眠的命令:echo standby>/sys/power/state
sys文件系统的构建主要使用include/linux/sysfs.h目录中的__ATTR和__ATTR_RO
#define __ATTR(_name,_mode,_show,_store){
.attr ={.name= __stringify(_name),.mode =_mode},
.show =_show,
.store =_store,
}
#defiene __ATTR_RO(_name){
.attr ={.name =__stringify(_name),.mode = 0x0444},
.show = _name##_show
}
创建sysfs中的文件 在内核中额可以使用如下函数:
int __must_check sysfs_create_file(struct kobject *kobj,const struct attribute *attr);
其中在文件被读取的时候调用show接口,在文件被写入的时候使用store,其中字符串的内容,将有实现者解析和构成