![Rank: 8](images/default/star_level3.gif) ![Rank: 8](images/default/star_level3.gif)
- UID
- 1029342
- 性别
- 男
|
![](http://images.eccn.com/silabs/silicon_chip_980x60_202203.jpg)
参数:
你要创建的文件名。
为创建的文件指定权限
为你要在哪个文件夹下建立名字为name的文件,如:init_net.proc_net是要在/proc/net/下建立文件。
为struct file_operations
保存私有数据的指针,如不要为NULL。
例子:
- ////////////////////////test.c////////////////////////////////////////
- #include <linux/init.h>
- #include <linux/module.h>
- #include <linux/types.h>
- #include <linux/slab.h>
- #include <linux/fs.h>
- #include <linux/proc_fs.h>
- #include <linux/seq_file.h>
- #include <net/net_namespace.h>
- #include <linux/mm.h>
- MODULE_LICENSE("GPL");
- typedef struct {
- int data1;
- int data2;
- }ST_Data_Info_Type;
- static ST_Data_Info_Type g_astDataInfo[2];
- static
int test_proc_show(struct seq_file *m, void *v) - {
- ST_Data_Info_Type* pInfo = (ST_Data_Info_Type*)m->private;
- if(pInfo != NULL)
- {
- seq_printf(m, "%d----%d\n", pInfo->data1, pInfo->data2);
- }
- return 0;
- }
- static
int test_proc_open(struct inode *inode, struct file *file) - {
- return single_open(file, test_proc_show, PDE_DATA(inode));
- }
- static const struct file_operations dl_file_ops = {
- .owner = THIS_MODULE,
- .open = test_proc_open,
- .read = seq_read,
- .llseek = seq_lseek,
- .release = single_release,
- };
- static struct proc_dir_entry *s_pstRootTestDir;
- void init_mem(void)
- {
- /* create /proc/test */
- s_pstRootTestDir = proc_mkdir("test", NULL);
- if (!s_pstRootTestDir)
- return;
- g_astDataInfo[0].data1=1;
- g_astDataInfo[0].data2=2;
- proc_create_data("proc_test1", 0644, s_pstRootTestDir, &dl_file_ops, &g_astDataInfo[0]);
- g_astDataInfo[1].data1=3;
- g_astDataInfo[1].data2=4;
- proc_create_data("proc_test2", 0644, s_pstRootTestDir, &dl_file_ops, &g_astDataInfo[1]);
- }
- static
int __init test_module_init(void) - {
- printk("[test]: module init\n");
- init_mem();
- return 0;
- }
- static void __exit test_module_exit(void)
- {
- printk("[test]: module exit\n");
- remove_proc_entry("proc_test1", s_pstRootTestDir);
- remove_proc_entry("proc_test2", s_pstRootTestDir);
- remove_proc_entry("test", NULL);
- }
- module_init(test_module_init);
- module_exit(test_module_exit);
proc_create
说明:创建proc虚拟文件系统文件
函数原型:
- struct proc_dir_entry *proc_create(const char *name, umode_t mode, struct proc_dir_entry *parent, const struct file_operations *proc_fops)
参数:
你要创建的文件名。
为创建的文件指定权限
为你要在哪个文件夹下建立名字为name的文件,如:init_net.proc_net是要在/proc/net/下建立文件。
为struct file_operations
注意:这个接口和proc_create_data的区别在于他不能保存私有数据指针。
PDE_DATA
获取proc_create_data传入的私有数据。
proc_symlink
说明:这个函数在procfs目录下创建一个从name指向dest的符号链接. 它在用户空间等效为ln -s dest name。
函数原型:
- struct proc_dir_entry *proc_symlink(const char *name, struct proc_dir_entry *parent, const char *dest)
参数:
原始符号。
符号所在的目录。
所要创建的符号链接名字。
remove_proc_entry
说明:删除procfs文件系统中的文件或者目录。
函数原型:
- void remove_proc_entry(const char *name, struct proc_dir_entry *parent)
参数:
要删除的文件或者目录名。
符号所在的目录,如果为NULL,表示在/proc目录下。 |
|