LINUX内核中编写procfs

本文介绍了Linux内核中的procfs,它是一种filesystem类型。讲解了procfs的说明文档位置,提供了2.6版本的API文档链接,并详细解析了几个关键API,如`create_proc_entry`、`proc_mkdir`和`remove_proc_entry`。还提到了在不同版本内核中procfs的变化,特别是在3.10之后,由`file_operations`取代了原来的结构。
摘要由CSDN通过智能技术生成

procfs

注意:适用于2.7-3.7,3.10之后的版本procfs又做了改变,因此编译最后的源码会出现错误。如果编译出现”dereferencing pointer to incomplete type“类似的错误,那就是版本变更了。新版本里用的是file_operation。

说明文档

首先要明白,procfs终究还是fs,也就是属于filesystem的一种。因此可以在内核文档中找到相关资料。如果你手头上有一份内核源码,那么可以根据以下相对路径找到这份说明:
./Documentation/filesystems/proc.txt

直接在网上也可以看到这份文档:
http://lxr.oss.org.cn/source/Documentation/filesystems/proc.txt

API

比较“官方”的procfs的API文档:
http://kernelnewbies.org/Documents/Kernel-Docbooks?action=AttachFile&do=get&target=procfs-guide_2.6.29.pdf

从url中可以看出,这是一份2.6版本内核所写的文档。目前而言,算是最新的了。毕竟2.6和2.4这两个版本之间的差距有点大。http://kernelnewbies.org这个网站里有很多适合Linux新手可以使用的东西,有兴趣可以收藏一下,以后查资料什么的也有个地方。

下面开始对一些关键API的解释,源码可以在以下相对路径中找到:
./kernel/fs/proc/generic.c

1.struct proc_dir_entry* create_proc_entry(const char* name, mode_t mode,struct proc_dir_entry* parent);
@name:创建出的procfs文件的名字
@mode:文件的权限,跟linux文件权限一样,默认为755
@parent:文件的父母节点,为NULL则会直接创建在’/proc‘目录下。可以不为空,详情参考下面一条API

创建一个procfs文件。表现是会在‘/proc’目录下多出一个名为@name的文件

2.struct proc_dir_entry* proc_mkdir(const char* name, struct proc_dir_entry*parent);
@name:文件夹的名字
@parent:父节点,与上面的API一样,可以为空

这个函数创建了一个文件夹,因此如果想在‘/proc’下创建一个文件夹,用于存放自定义的proc文件,则可以调用该函数创建一个文件夹。并将该函数的返回值作为‘create_proc_entry’函数的@parent参数。

3.void remove_proc_entry(const char* name, struct proc_dir_entry* parent);<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值