1 函数说明:
  struct proc_dir_entry *proc_mkdir( const char *name , struct proc_dir_entry *parent );
  函数功能:创建一个目录
  参数 :const char *name 要创建的目录名
         struct proc_dir_entry *parent 父目录的结构体指针,如果为空,就在/proc目录下创建一个目录
  返回值:失败返回NULL

struct proc_dir_entry *proc_create(        const char *name, umode_t mode, struct proc_dir_entry *parent,
        const struct file_operations *proc_fops)
  函数功能:创建一个PROC文件
  参数:const char *name 要创建的PROC文件名
        umode_t mode 文件的访问权限,例如0777 0666 0644,
        struct proc_dir_entry *parent 父目录的指针,如果为空就创建在/proc目录下
        const struct file_operations *proc_fops PROC文件操作的函数指针,如open close read write等等
  返回值:失败返回NULL

struct proc_dir_entry *proc_create_data(const char *name, umode_t mode, struct proc_dir_entry *parent,
        const struct file_operations *proc_fops, void * data);
  这个函数和proc_create的功能是基本一样的,只是多的一个参数void * data
  void * data这个是传递给proc文件的数据,在文件的操作函数中,可以在read write之类的操作中调用PDE_DATA(file_inode(file)); 来获取这个指针。

void remove_proc_entry(const char *name, struct proc_dir_entry *parent);
  函数功能:删除一个PROC文件
  参数:const char *name 要删除的文件名
        struct proc_dir_entry *parent 父目录的指针

2 示例代码:

static struct proc_dir_entry * test_entry = NULL;
static struct proc_dir_entry * test_root = NULL; 
static ssize_t  test_read(struct file * file,char __user *data,size_t len,loff_t *off)
{
        char *ptr = PDE_DATA(file_inode(file)); 
        printk("%s\n",ptr);
        printk("proc read\n");
        return 0;
}
static ssize_t test_write(struct file * file,const char __user* data,size_t len,loff_t *off)
{
        printk("proc write\n");
        return len;
}
static struct file_operations test_proc_ops = {
       .owner  = THIS_MODULE,
       .read = test_read, 
       .write = test_write
};
char temp[]="this is test\0";
static int proc_init(void)
{
         
         
        proc_root = proc_mkdir("test_dir", NULL);
        test_entry = proc_create_data("test",0666,proc_root,&test_proc_ops ,&temp );
         
        if(!test_entry){
                printk(KERN_ERR"can't create  proc file \n" );
                return -EFAULT;
        }
 
                 
        return 0;
}

static void  proc_exit(void)
{
        if(test_entry )
        {
                    remove_proc_entry("test",proc_root);
            }
 
}
如果调用了proc_init,我们就可以在/proc/test_dir目录下有一个test的文件
如果我们执行cat /proc/test_dir/test
就可以看到
this is test
proc read
的串口信息了
同样的如果执行echo "123" /proc/test_dir/test
我们就可以看到
proc write
的串口信息了

linux proc文件创建指南相关推荐

  1. linux调度全景指南

    | 导语 本文主要是讲Linux的调度系统, 由于全部内容太多,分三部分来讲,调度可以说是操作系统的灵魂,为了让CPU资源利用最大化,Linux设计了一套非常精细的调度系统,对大多数场景都进行了很多优 ...

  2. Linux内核模块编程指南(一)(转)

    Linux内核模块编程指南(一)(转) 当第一个原始的程序员在最开始的窑洞计算机之墙上凿过第一个程序时,那是一个在羚羊图案上画上"Hello, world"的程序.罗马人的编程书籍 ...

  3. linux内核测试指南 第一章

    linux内核测试指南 第一章 内核,补丁,内核树 和 编译 1.1 内核 Linux内核的当前版本通常可以从linux内核档案网站(http://www.kernel.org/)以一个大的压缩文件的 ...

  4. Linux 内核编程指南

    Linux 内核编程指南   PeterJay Salzman MichaelBurian OriPomerantz Copyright© 2001 Peter Jay Salzman 2007−05 ...

  5. linux内核调试指南

    Hunnad的专栏 * 条新通知 * 登录 * 注册 * 欢迎 * 退出 * 我的博客 * 配置 * 写文章 * 文章管理 * 博客首页 * * * * 空间 * 博客 * 好友 * 相册 * 留言 ...

  6. linux内核调试指南 1

    大海里的鱼有很多,而我们需要的是鱼钩一只 一些前言 作者前言 知识从哪里来 为什么撰写本文档 为什么需要汇编级调试 ***第一部分:基础知识*** 总纲:内核世界的陷阱 源码阅读的陷阱 代码调试的陷阱 ...

  7. linux 内核调试指南

    大海里的鱼有很多,而我们需要的是鱼钩一只 本文档由大家一起自由编写,修改和扩充,sniper负责维护.引用外来的文章要注明作者和来处.本文档所有命令都是在ubuntu/debian下的操作.选取的内核 ...

  8. Linux Kernel - Debug Guide (Linux内核调试指南 )

    linux内核调试指南 一些前言 作者前言 知识从哪里来 为什么撰写本文档 为什么需要汇编级调试 ***第一部分:基础知识*** 总纲:内核世界的陷阱 源码阅读的陷阱 代码调试的陷阱 原理理解的陷阱 ...

  9. RHCSA/RHCE Red Hat Linux认证学习指南(第6版):EX200 EX300

    <RHCSA/RHCE Red Hat Linux认证学习指南(第6版):EX200 & EX300> 基本信息 原书名:RHCSA/RHCE Red Hat Linux Cert ...

  10. linux 系统裁减指南,Linux 系统裁减指南

    Linux 系统裁减指南 第一步:裁减内核 打开终端,输入:cd /usr/src/linux2.4,然后输入make xconfig.现在编译内核正式开始了 1.1        "cod ...

最新文章

  1. Pycharm解决中文字体大小不一致问题
  2. TCP/IP / 状态转换图
  3. android 上传文件用php程序在服务端接受(一)
  4. 前端应该掌握的网络知识(1)
  5. java定时任务_ftp上传软件,ftp上传软件定时功能教程
  6. Python使用Queue对象实现多线程同步小案例
  7. linux下qemu共享文件夹,QEMU Windows来宾和Linux主机之间的共享文件夹
  8. 83. 验证码(1)
  9. 微软小娜服务器,微软小娜正在继续被边缘化中:奇妙清单也不再支持小娜连接-...
  10. excel怎么设置自动计算_最新个税计算Excel模版,含专项扣除 (自动生成),人手一份...
  11. jquery 立体走马灯_jquery实现跑马灯效果(一)
  12. Web身份验证(WebAuthn)
  13. IntelliJ IDEA java项目导入jar包,打jar包
  14. 关于安装李沐深度学习d2l包报错的解决办法(保姆教程)
  15. Halcon17完美破解兼容17.12.0.0附破解说明
  16. css3水波纹渐变扩散
  17. 无名namespace
  18. 群签名技术的理解和总结
  19. 创业陷阱——逐一点评301个骗你没商量的项目
  20. 电脑配件 - 电脑组成以及性能指标分析 - 学习/实践

热门文章

  1. 会说话的汤姆猫2 Talking Tom 2(含数据包) v2.0.3
  2. 沈从文写给张兆和的情书
  3. Arcgis 10.2坡度分析
  4. 视频直播时连麦功能使用说明
  5. 【面试题】数字转成汉字形式
  6. centos php安装 pecl,pecl是什么?如何在centos下安装pecl?
  7. bios error 装系统acpi_重装系统遇到bios acpi错误。
  8. 程序员转行做数据分析师_程序员可以转行数据分析师吗?
  9. Unity3D资源包中没有Bouncy材质怎么办
  10. Opencv 学习笔记(二)