创建proc节点之create_proc_entry
来源:互联网 发布:wind资讯金融数据库 编辑:程序博客网 时间:2024/06/09 21:06
proc虚拟文件系统也可以创建节点,实现用户空间与内核空间的交互。在驱动中创建节点,可以实现对硬件的控制。
1.创建proc节点
struct proc_dir_entry *create_proc_entry (const char *name, mode_t mode, struct proc_dir_entry *parent);参数:name:/proc/下节点的文件名,也可以是路径;例:“driver/demo”,在driver下创建demo节点mode:访问权限,与普通文件相同;例:0666可读可写,0444只读,0222只写parent:父目录,可以为 NULL(表示 /proc 根目录);
注意: parent的类型是proc_dir_entry的指针,不能直接填文件名字符串,最好是用路径初始化name参数,例:
create_proc_entry (“driver/demo”,0666,NULL);
create_proc_entry 的返回值是一个proc_dir_entry 指针(或者为 NULL,说明在 create 时发生了错误)。
可以使用这个返回的指针来配置这个虚拟文件的其他参数,例如在对该文件执行读操作时应该调用的函数。
2.删除proc节点
要从 /proc 中删除一个文件,可以使用 remove_proc_entry 函数
void remove_proc_entry( const char *name, struct proc_dir_entry *parent );
3.代码实例:
#include <linux/module.h> #include <linux/types.h> #include <linux/fs.h> #include <linux/errno.h> #include <linux/mm.h> #include <linux/init.h> #include <asm/uaccess.h> #include <linux/timer.h> #include <asm/atomic.h> #include <linux/slab.h> #include <linux/proc_fs.h>static int temp = 0; static ssize_t demo_get(char *buffer, char **buffer_location,off_t offset, int buffer_length, int *eof, void *data){ sprintf(buffer,"read ,demo temp is %d",temp); printk(KERN_NOTICE "read ,demo temp is %d\n",temp); return 0;}static ssize_t demo_set(struct file *file, const char *buffer, size_t count,loff_t *lof){ sscanf(buffer, "%d", &temp); printk(KERN_NOTICE "write ,demo temp is %d\n",temp); return count;}int demo_init(void) { printk(KERN_NOTICE "======== demo_init "); int ret; struct proc_dir_entry *entry; entry= create_proc_entry("driver/demo",0666,NULL); if(entry) { entry->read_proc = demo_get; entry->write_proc = demo_set; } printk(KERN_NOTICE "======== demo_init end\n"); return 0; } void demo_exit(void) /*模块卸载*/ { printk(KERN_NOTICE "End demo\n"); remove_proc_entry("driver/demo",NULL);} MODULE_LICENSE("Dual BSD/GPL"); module_param(temp, int, S_IRUGO); module_init(demo_init); module_exit(demo_exit);
阅读全文
0 0
- 创建proc节点之create_proc_entry
- create_proc_read_entry(), create_proc_entry() | 创建 /proc 文件
- create_proc_read_entry(), create_proc_entry() | 创建 /proc 文件
- Linux kernel (without create_proc_entry func) Proc文件系统的实例
- 怎样在Linux驱动中创建proc节点(示例)
- 创建3个节点。sys下面和proc、dev下面。
- sys下面 proc下面,dev下面分别创建一个节点
- 怎样在Linux驱动中创建proc节点(示例)
- ZkClient之创建节点。
- Curator之创建节点。
- Linux内核之/proc节点
- proc节点技巧
- linux proc文件系统节点
- 创建设备节点之mknod
- jQueryDom操作之创建节点
- cocos2dx之创建悬浮节点
- cocos2dx之创建悬浮节点
- html_DOM之创建添加节点
- php---long2ip()与ip2long()
- Java进阶之支付宝在线支付知识点总结
- git Your branch is ahead of 'origin/master'
- 使用trace-compass 分析 lttng 抓取的结果
- C++学习 C/C++之回调函数
- 创建proc节点之create_proc_entry
- java打飞机游戏完整代码
- Java代码注释规范
- 剖析一个再次调整的seo排名案例
- JDK1.7&1.8HashMap不同
- 725. Split Linked List in Parts
- 文章标题
- 环形单链表的约瑟夫问题 Python版
- Python基础篇之break退出循环