0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux驱动中procfs接口的创建

麦辣鸡腿堡 来源:嵌入式Linux充电站 作者:Vincent 2023-09-27 11:24 次阅读

procfs接口创建

实现效果:

例如, 在/proc下创建一个clk节点,通过cat /proc/clk可查看内容:

图片

在驱动中添加以下代码:

#include < linux/kernel.h >
#include < linux/module.h >
#include < linux/init.h >
#include < linux/proc_fs.h >
#include < linux/seq_file.h >

struct proc_dir_entry *my_proc_entry;

static int proc_clk_show(struct seq_file *m, void *v)
{
    //cat显示的内容
    seq_printf(m,
          "pll0: %u Mhzn"
          "pll1: %u Mhzn"
          "pll2: %u Mhzn",
          100, 200, 300);
   return 0;
}

static int clk_info_open(struct inode *inode, struct file *filp)
{
     return single_open(filp, proc_clk_show, NULL);
}

static struct file_operations myops = 
{
      .owner = THIS_MODULE,
      .open = clk_info_open,
      .read = seq_read,
      .llseek = seq_lseek,
      .release = seq_release,
};

static int __init my_module_init(void)
{
    //注册proc接口
   my_proc_entry = proc_create("clk", 0644, NULL, &myops);

    return 0;
}

static void __exit my_module_exit(void)
{
    //注销proc接口
   proc_remove(my_proc_entry);
}

module_init(my_module_init);
module_exit(my_module_exit);
MODULE_LICENSE("GPL");

procfs接口的创建,主要是实现struct file_operations结构体,然后通过proc_create函数进行注册,通过proc_remove函数进行注销。

procfs通常是用来获取CPU、内存、进程等各种信息,例如cat /proc/cpuinfocat /proc/meminfo,所以我们只需要实现.open成员函数。当使用cat命令查看/proc下的信息时,会调用到.open对应的实现函数。

这里我们使用了seq_file接口,需要记住的是, procfs通常会和seq_file接口一起使用 。seq_file是一个序列文件接口, 当我们创建的proc数据内容由一系列数据顺序组合而成或者是比较大的proc文件系统时,都建议使用seq_file接口 ,例如cat /proc/meminfo就会显示很多内容。

seq_file接口主要就是解决proc接口编程存在的问题, 推荐在proc接口编程时使用seq_file接口 ,另外.read、.llseek、.release成员函数也可以直接用seq_readseq_lseekseq_release

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口
    +关注

    关注

    33

    文章

    7639

    浏览量

    148496
  • 驱动
    +关注

    关注

    11

    文章

    1717

    浏览量

    84345
  • Linux
    +关注

    关注

    87

    文章

    10991

    浏览量

    206736
收藏 人收藏

    评论

    相关推荐

    Linux驱动创建sysfs接口的方法

    在一些linux开发板中,经常可以看到通过echo的方式来直接控制硬件或者修改驱动
    发表于 05-31 16:24 573次阅读

    Linux驱动创建procfs接口的方法

    上篇介绍了Linux驱动中sysfs接口创建,今天介绍procfs接口
    发表于 05-31 16:48 569次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>驱动</b>中<b class='flag-5'>创建</b><b class='flag-5'>procfs</b><b class='flag-5'>接口</b>的方法

    Linux驱动创建debugfs接口的方法

    上篇介绍了procfs接口创建,今天再介绍一种debugfs接口创建
    发表于 05-31 16:53 732次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>驱动</b>中<b class='flag-5'>创建</b>debugfs<b class='flag-5'>接口</b>的方法

    简析Linux proc文件系统

    linux 操作系统把虚拟地址分为用户空间和内核空间,内核空间可以通过procfs把内核的数据呈现给用户空间,用户空间也可以把数据写入到内核从而更改内核的行为,这在驱动中很常见,最终目的就是app就能通过读写
    发表于 06-16 10:32 572次阅读

    LiteOS-A内核procfs文件系统分析

    procfs文件系统是LiteOS-A内核文件系统的一个案例,通过了解procfs文件系统,能够熟悉LiteOS-A的文件系统框架,并很好地将内核信息通过文件系统反馈给使用者。Linux系统
    发表于 12-08 11:31

    嵌入式Linux 下IC 卡接口设计与驱动开发

    Linux 系统中, 设备驱动程序提供了设备和上层应用空间的标准抽象接口,使得硬件响应这个标准的内部编程接口;而用户则可以通过一组标准化的系统调用对硬件设备进行打开、关
    发表于 05-18 13:59 18次下载

    Linux目录的创建与删除命令

    Linux目录的创建与删除命令 Linux目录的创建与删除命令  mkdir命令  功能:创建一个目录(类似DOS下的md命令)。  语法
    发表于 01-18 12:46 1251次阅读

    Linux下CPLD驱动程序

    Linux下CPLD驱动程序: static struct class *cpld_class; //自动创建设备文件时需要先创建类 static
    发表于 05-10 13:57 5473次阅读

    嵌入式Linux下ARM_DSP通信接口设计及驱动开发

    嵌入式Linux下ARM_DSP通信接口设计及驱动开发
    发表于 05-19 11:17 0次下载

    手把手教你创建Linux设备驱动和应用程序

    其实我们创建的myLed IP相对于Linux操作系统可以是它的一个底层设备,因为PS总线为myLed IP分配了寻址地址,这样我们就可以创建myLed IP模块的硬件驱动,然后搭建应
    发表于 11-10 14:49 4225次阅读
    手把手教你<b class='flag-5'>创建</b><b class='flag-5'>Linux</b>设备<b class='flag-5'>驱动</b>和应用程序

    基于嵌入式Linux下ARM_DSP通信接口设计及驱动开发

    基于嵌入式Linux下ARM_DSP通信接口设计及驱动开发
    发表于 10-19 10:38 12次下载
    基于嵌入式<b class='flag-5'>Linux</b>下ARM_DSP通信<b class='flag-5'>接口</b>设计及<b class='flag-5'>驱动</b>开发

    如何在 Vitis 中使用 UIO 驱动框架创建简单的 Linux 用户应用

    Linux嵌入式设计中最基本的任务之一是创建用户应用程序。 在本篇博文中,我们将探讨如何在 Vitis 中使用 UIO 驱动框架创建简单的 Linu
    的头像 发表于 11-20 14:05 3946次阅读

    你们知道Linux的进程是怎样创建的吗

    Linux的进程是怎样创建Linux系统创建进程都是由已存在的进程创建的(除了0号进程),被创建
    的头像 发表于 11-09 10:46 2979次阅读
    你们知道<b class='flag-5'>Linux</b>的进程是怎样<b class='flag-5'>创建</b>的吗

    Linux驱动-spidev驱动使用方法

    Linux内核集成了spidev驱动,提供了SPI设备的用户空间API,支持用于半双工通信的read()和write()访问接口以及用于全双工通信和I/O配置的ioctl()接口;使用
    的头像 发表于 04-07 10:22 3079次阅读

    Linux驱动proc新接口介绍

    proc新接口 注意,在较新版本的内核中, procfs 的函数接口有所变化。 系统 内核版本 Linux 5.10.111 在驱动中添加以
    的头像 发表于 09-27 11:29 225次阅读