编写一个简单的proc文件

本文介绍了如何在Linux内核模块中创建一个简单的proc文件,涉及write_proc_t和read_proc_t函数的使用,以及用户空间到内核空间的数据拷贝。通过实现这些接口,可以实现在/proc文件系统下读写数据的功能。
摘要由CSDN通过智能技术生成

proc文件的实现也需要编写出一个内核模块并插入内核。模块的编写过程我们已经Hello,Module过了,而proc文件的实现稍微复杂一些。

在linux内核模块编写中,常常会有一些结构体,结构体中定义了很多函数指针,内核模块的编写常常是围绕着实现这些函数指针而进行的。实现了这些接口便可以调用相应的函数把相应的功能模块插入内核(拗口),以下是proc文件的结构体接口描述:

//linux/proc_fs.h

//读函数原型
typedef	int (read_proc_t)(char *page, char **start, off_t off,
			  int count, int *eof, void *data);

//写函数原型
typedef	int (write_proc_t)(struct file *file, const char __user *buffer,
			   unsigned long count, void *data);

			   
struct proc_dir_entry {
	unsigned int low_ino;
	unsigned short namelen;
	const char *name;	//proc文件的名字
	mode_t mode;
	nlink_t nlink;
	uid_t uid;
	gid_t gid;
	unsigned long size;
	struct inode_operations * proc_iops;
	struct file_operations * proc_fops;
	get_info_t *get_info;
	struct module *owner;
	struct proc_dir_entry *next, *parent, *subdir;
	void *data;
	read_proc_t *read_proc;			//读函数(需用户实现)
	write_proc_t *write_proc;		//写函数(需用户实现)
	atomic_t count;		/* use count */
	int deleted;		/* delete flag */
};

/*创建一个proc结构体
@name: proc文件的名字
@mode:
@parent: proc文件被创建的目录
*/
struct proc_dir_entry *create_proc_entry(const char *name, mode_t mode,struct proc_dir_entry *parent);
/*
从内核中移除一个proc文件
*/
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、付费专栏及课程。

余额充值