十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这篇文章主要为大家展示了“Linux内核设备驱动之proc文件系统的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux内核设备驱动之proc文件系统的示例分析”这篇文章吧。
创新互联专注于成都网站设计、成都做网站、网页设计、网站制作、网站开发。公司秉持“客户至上,用心服务”的宗旨,从客户的利益和观点出发,让客户在网络营销中找到自己的驻足之地。尊重和关怀每一位客户,用严谨的态度对待客户,用专业的服务创造价值,成为客户值得信赖的朋友,为客户解除后顾之忧。
/***************** * 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文件
需包含头文件
a.在/proc下创建文件
调用create_proc_read_entry在/proc下创建新的文件
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文件
void remove_proc_entry( const char *name, struct proc_dir_entry *parent);
c.定义返回数据的函数
在进程读取/proc文件时,内核会分配一个内存页(即PAGE_SIZE个字节的内存块),驱动将要写的数据通过这个内存页返回到用户空间。
typedef int (read_proc_t)(char *page, char **start, off_t off, int count, int *eof, void *data);
以上是“Linux内核设备驱动之proc文件系统的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!