Chinaunix首页 | 论坛 | 博客
  • 博客访问: 329369
  • 博文数量: 161
  • 博客积分: 245
  • 博客等级: 二等列兵
  • 技术积分: 694
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-08 13:19
文章分类

全部博文(161)

文章存档

2016年(3)

2015年(31)

2014年(11)

2013年(107)

2012年(9)

分类: LINUX

2013-04-24 22:04:48

一、头文件:
 

   #include
二、创建与删除proc文件:
    <一>创建普通文件:
        1.创建不可读写的普通文件
            
            struct proc_dir_entry* create_proc_entry (const char *name,mode_t mode,struct proc_dir_entry *parent);
            @name :要创建的文件名
            @mode :要创建的文件的属性 默认0755
            @parent :这个文件的父目录
        2.创建只读的普通文件
            
            struct proc_dir_entry * create_proc_read_entry (const char *name,mode_t mode,struct proc_dir_entry *parent,read_proc_t* read_proc,void *data);
            @name :要创建的文件名
            @mode :要创建的文件的属性 默认0755
            @parent :这个文件的父目录
            @read_proc :当用户读这个文件时,内核调用的函数
            @data :传给read_proc的参数
        
        3.创建目录
            
            struct proc_dir_entry * proc_mkdir (const char *name,struct proc_dir_entry *parent);
            @name :要创建的目录名
            @parent :这个目录的父目录
        4.删除文件或目录
            
            void remove_proc_entry (const char *name,struct proc_dir_entry *parent);
            @name :要删除的文件或目录名
            @parent :所在的父目录       
    <二>、读写proc文件
        为了能让用户读写添加的proc文件,需要挂接上读写回调函数:read_proc和write_proc
        例:
            struct proc_dir_entry * entry;
            entry—>read_proc = read_proc_foo;
            entry—>write_proc = write_proc_foo;
        1.读函数read_func
            
            int read_func (char *buffer,char **stat,off_t off,int count,int *peof,void *data);
            @buffer :把要返回给用户的信息写在buffer里,最大不超过PAGE_SIZE(一般4K)
            @stat :一般不使用
            @off :buffer的偏移量
            @count :用户要取的字节数
            @peof :读到文件尾时,把peof指向的位置置1
            @data :被多个proc文件定义为读时,通过data传递参数
        2.写函数write_func
            
            int write_func (struct file *file,const char *buffer,unsigned long count,void *data);
            @file :该proc文件对应的file结构,一般忽略。
            @buffer :待写的数据所在的位置
            @count :待写数据的大小

            @data :同read_func






阅读(2959) | 评论(0) | 转发(0) |
0

上一篇:Linux内核网络栈源代码分析

下一篇:printk

给主人留下些什么吧!~~