proc
2015-09-28 20:35
204 查看
1. /proc 下文件的内容是动态创建的,当文件可写时可用作控制和配置目的。
2. 在某个进程读取 /proc 文件时,内核会分配一个内存页,驱动程序通过这个内存页将数据返回到用户空间 (read()调用传入的用户空间的buff指针)。
3. 驱动程序中需要定义一个 read_proc() 函数,并且把该函数与 /proc 入口项 (/proc 下的文件节点) 连接起来通过内核函数create_proc_read_entry()。
View Code
分析: 不能直接将 buffer的地址赋给 buf ,而是需要通过 sprintf() 格式化输出到buf 。
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 。
相关文章推荐
- 闭包结构(多层)
- JS浮点运算错误的解决
- 基础数据结构--栈实现
- 解决Eclipse建立Maven项目后无法建立src/main/java资源文件夹的办法
- 【Unity技巧】四元数(Quaternion)和旋转
- noip2013
- C语言-文件操作函数(部分)
- 通知 ------- Notification
- hdu5942
- 大数据和云计算的区别是什么?
- lightoj(基础数学)
- 编译原理:第七节 及词法分析器的C++和Python实现
- Evaluate Reverse Polish Notation(堆栈)
- cocos代码研究(2)Layer学习笔记
- net-snmp配置文件详解
- Linux学习笔记——系统启动流程
- [APUE]再读之高级IO
- iOS大典之动态相册
- opengl的三维与二维转换
- CYC- 复杂对象归档 反归档