您的位置:首页 > 其它

proc

2015-09-28 20:35 204 查看
1. /proc 下文件的内容是动态创建的,当文件可写时可用作控制和配置目的。

2. 在某个进程读取 /proc 文件时,内核会分配一个内存页,驱动程序通过这个内存页将数据返回到用户空间 (read()调用传入的用户空间的buff指针)。

3. 驱动程序中需要定义一个 read_proc() 函数,并且把该函数与 /proc 入口项 (/proc 下的文件节点) 连接起来通过内核函数create_proc_read_entry()。

//proc.c
#include <linux/module.h>
#include <linux/init.h>

#include <linux/proc_fs.h>

char buffer[]="good morning\n";
int scull_read_procmem(char *buf, char **start, off_t offset,
int count, int *eof, void *data)
{
int len;
len = sprintf(buf,"%s",buffer);
return len;
}

int proc_init_module(void)
{
create_proc_read_entry("mem", 0 /* default mode */,
NULL /* parent dir */, scull_read_procmem,
NULL /* client data */);
return 0;
}

void proc_cleanup_module(void)
{
remove_proc_entry("mem", NULL /* parent dir */);
}

module_init(proc_init_module);
module_exit(proc_cleanup_module);


View Code
分析: 不能直接将 buffer的地址赋给 buf ,而是需要通过 sprintf() 格式化输出到buf 。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: