使用/proc 调试
来源:互联网 发布:松下空调 知乎 编辑:程序博客网 时间:2024/05/01 00:35
2015年 11月 25日 星期三 13:43:12 CST
=============================================================================
使用/proc
在linux系统中,/proc文件系统它被用于内核向用户导出信息。/proc文件系统是
一个虚拟文件系统,通过它可以使用一种新的方法在linux内核空间和用户空间之间
进行通信。在/proc文件系统中,我们可以将对虚拟文件的读写作为与内核中实体进行
通信的一种手段,与普通文件不同的是,这些虚拟文件的内容都是动态创建的。
=============================================================================
一:
在linux系统中,可用如下函数创建/proc节点:
函数所在的头文件声明:xx/include/linux/proc_fs.h
************
struct proc_dir_entry *create_proc_entry(const char *name,
mode_t mode, struct proc_dir_entry *parent);
************
struct proc_dir_entry *create_proc_read_entry(const char *name,
mode_t mode, struct proc_dir_entry *base,
read_proc_t *read_proc, void * data);
create_proc_entry()函数用于创建/proc节点,而下面的create_proc_read_entry()调用
create_proc_entry()创建只读的/proc节点。参数name为/proc节点的名称,parent或base
为父目录的节点,如果为NULL,则指/proc目录,read_proc是/proc节点的读函数指针。
当read()系统调用在/proc文件系统中执行时,它映像到一个数据产生函数,而不是一个数
据获取函数。
二:
下列函数用于创建/proc目录:
struct proc_dir_entry *proc_mkdir(const char *name,
struct proc_dir_entry *parent);
三:
上述创建/proc节点和/proc目录的函数的返回值为如下结构体:
struct proc_dir_entry
{
...
read_proc_t *read_proc;
write_proc_t *write_proc;
...
};
proc_dir_entry结构体中包含了/proc节点的读函数指针 read_proc_t*read_proc;
写函数指针write_proc_t *write_proc;以及父节点,子节点信息等。
************************
/proc节点的读写函数的类型分别为:
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);
*读函数中page指针指向用于写入数据的缓冲区,start用于返回实际的数据写到内存
页的位置,eof是用于返回读结束标志,offset是读的偏移,count是要读的数据长
度。
start参数比较复杂,对于/proc只包含简单数据的情况,通常不需要在读函数
中设置*start,意味着内核将认为数据保存在内存页偏移0的地方。如果将*start
设置为非0值,意味着内核将认为*start指向的数据是offset偏移处的数据*
*写函数与file_operations中的write()成员类似,需要一次从用户缓冲区到内存空
间的复制过程 *
四:
linux系统中可用如下函数删除/proc节点:
void remove_proc_entry(const char *name, struct proc_dir_entry *parent);
0 0
- 使用/proc 调试
- /PROC 调试
- Linux调试中使用的proc和sys中的接口
- 学习笔记 --- LINUX 驱动调试之使用proc
- [linux device driver] Chapter 04:使用/proc文件系统查询调试
- /proc 目录调试信息
- /proc文件系统用于内核调试
- Core Dump和/proc调试
- 驱动调试之proc文件系统
- proc文件系统用于内核调试
- 配置VC使用PROC
- solaris 使用proc工具
- 使用/proc测试
- 使用/proc测试
- 注意使用 /proc文件
- 使用proc文件系统
- 使用proc接口例子
- /proc文件系统的使用
- 电脑无法开机一直滴滴响
- 【window10+vs2013+opencv3.0+cuda7.5安装与配置】
- Git 删除远程仓库文件
- 静态路由(静态汇总路由,静态默认路由,负载均衡,浮动静态路由)介绍
- 判断是否是手机号和email的方法
- 使用/proc 调试
- Java NIO (十一) Pipe
- Html.fromHtml(str)
- Make a difference with Dragon Board410c(1)
- 从程序员到CTO的Java技术路线图
- Go CopyFile 异常处理 实现
- Android数据库中增删改查数据
- callgrind使用说明(一款可以生成c++或c运行堆栈性能的工具)
- 快速排序的理解