服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - Linux内核设备驱动之proc文件系统笔记整理

Linux内核设备驱动之proc文件系统笔记整理

2022-08-09 09:11Engineer-Bruce_Yang Linux

今天小编就为大家分享一篇关于Linux内核设备驱动之proc文件系统笔记整理,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

?
1
2
3
/*****************
 * proc文件系统
 *****************/

(1)/proc文件系统的特点和/proc文件的说明

/proc文件系统是一种特殊的、由软件创建的文件系统,内核使用它向外界导出信息,/proc系统只存在内存当中,而不占用外存空间。

/proc下面的每个文件都绑定于一个内核函数,用户读取文件时,该函数动态地生成文件的内容。也可以通过写/proc文件修改内核参数

/proc目录下的文件分析  /proc/$pid 关于进程$pid的信息目录。每个进程在/proc 下有一个名为其进程号的目录。例:$>strings -f /proc/[0-9]*/cmdline

  • /proc/cmdline  内核启动的命令行
  • /proc/cpuinfo  处理器信息,如类型、制造商、型号和性能。 
  • /proc/devices  列出字符和块设备的主设备号,以及分配到这些设备号的设备名称
  • /proc/dma  显示当前使用的DMA通道。 
  • /proc/filesystems  列出了可供使用的文件系统类型,通常是编入内核的文件系统类型,但可以通过模块加入新的类型
  • /proc/interrupts  显示使用的中断号,中断名称,以及这些中断从系统启动后产生的次数
  • /proc/ioports  当前使用的I/O端口。 
  • /proc/kallsyms  内核符号表。安装新的模块后,会在这里体现出来 
  • /proc/kcore  系统物理内存映象。与物理内存大小完全一样,但不实际占用这么多内存;(记住:除非拷贝到文件中,/proc下没有任何东西占用任何磁盘空间) 
  • /proc/kmsg  内核输出的消息。也被送到syslog。 
  • /proc/loadavg  系统的平均负载,前3个是过去1分钟,5分钟,15分钟的负载,然后是正在运行的任务数和总任务数,最后是上次运行的进程号
  • /proc/meminfo  存储器使用信息,包括物理内存和swap。 
  • /proc/modules  当前加载了哪些核心模块。 
  • /proc/partitions  系统当前挂载硬盘的分区信息
  • /proc/pci  系统的pci总线信息
  • /proc/net  网络协议状态信息。 
  • /proc/self  到查看/proc的程序的进程目录的符号连接。当2个进程查看/proc时,是不同的连接。这主要便于程序得到它自己的进程目录。
  • /proc/slabinfo  系统中slab缓存的分配信息
  • /proc/stat  系统的一些状态信息
  • /proc/swaps  系统采用的交换区信息
  • /proc/sysrq-trigger  用于启动sysRq键  $>echo 1 > sysrq-trigger
  • /proc/uptime  系统启动的时间长度和空闲的时间长度。供uptime使用
  • /proc/version  内核版本

(2)自行实现一个/proc文件

需包含头文件<linux/proc_fs.h>,函数定义在/fs/proc/generic.c

a.在/proc下创建文件

调用create_proc_read_entry在/proc下创建新的文件

?
1
2
3
4
5
6
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)

b.卸载/proc下的文件

采用remove_proc_entry卸载proc文件

?
1
2
3
void remove_proc_entry(
    const char *name,
    struct proc_dir_entry *parent);

c.定义返回数据的函数

在进程读取/proc文件时,内核会分配一个内存页(即PAGE_SIZE个字节的内存块),驱动将要写的数据通过这个内存页返回到用户空间。

?
1
2
typedef int (read_proc_t)(char *page, char **start, off_t off,
int count, int *eof, void *data);

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对服务器之家的支持。如果你想了解更多相关内容请查看下面相关链接

原文链接:https://blog.csdn.net/morixinguan/article/details/79706256

延伸 · 阅读

精彩推荐
  • Linuxlinux挂载windows共享文件夹的方法

    linux挂载windows共享文件夹的方法

    对于linux的初级使用阶段,都会Windows中使用linux虚拟机VMWare或者其它的。在Windows与linux之间互传文件是一个问题。本方法介绍的是在linux下挂载Windows共享文...

    系统之家7922019-11-11
  • Linuxlinux Vi编辑器代码高亮设置及永久显示行号的方法

    linux Vi编辑器代码高亮设置及永久显示行号的方法

    在linux中用vi编辑和修改文件配置中没有彩色显示文件的内容,特别一些关键字不能彩色显示,给我们配置服务过程中造成极大的不方便...

    linux之家4472019-06-13
  • Linuxlinux网络编程socket介绍

    linux网络编程socket介绍

    linux网络程序分为服务端程序和客户端程序,linux编写网络程序时,一般是基于TCP协议或者UDP协议进行网络通信的。 ...

    Linux教程网3632019-11-26
  • LinuxLinux系统中将Tor的Socks5代理转为HTTP代理的教程

    Linux系统中将Tor的Socks5代理转为HTTP代理的教程

    这篇文章主要介绍了Linux系统中将Tor的Socks5代理转为HTTP代理的教程,Tor洋葱路由是实现匿名通信的自由软件,需要的朋友可以参考下...

    开源中文社区5742019-06-26
  • Linux朝鲜创新操作系统:“红星Linux 3.0” 满满的苹果味

    朝鲜创新操作系统:“红星Linux 3.0” 满满的苹果味

    最近一个曾经在平壤教书的美国人将朝鲜自主研发的红星 Linux 系统带了出来,我们也能有幸看看传说中黑了索尼的朝鲜 Geek 们现在用的是什么系统。 外泄...

    脚本之家5552019-09-30
  • LinuxLinux下LAMP PHP开发环境搭建

    Linux下LAMP PHP开发环境搭建

    平时写程序时都是在服务器已经搭建好的PHP环境进行的。出于对未知知识的好奇,这几天在自己的机器上搭建起了PHP开发环境 ...

    Linux教程网4202020-03-11
  • LinuxLinux添加swap分区的方法

    Linux添加swap分区的方法

    这篇文章主要介绍了Linux添加swap分区的方法,首先需要我们建立一个普通的linux 分区,具体实例代码,大家跟随脚本之家小编一起看看吧...

    揅笑晏晏11272022-07-16
  • LinuxLinux中查看帮助相关的命令整理

    Linux中查看帮助相关的命令整理

    这篇文章主要介绍了Linux中查看帮助相关的命令整理,是Linux入门学习中的基础知识,需要的朋友可以参考下 ...

    大步's Blog5672019-09-12