Linux内核proc文件系统使用示例

​ 详解Linux内核通信-proc文件系统 使用 /proc 文件系统来访问 Linux 内核的内容,这个虚拟文件系统在内核空间和用户空间之间打开了一个通信窗口:/proc 文件系统是一个虚拟文件系统,通过它可以使用一种新的方法在 Linux内核空间和用户间之间进行通信。在 /proc 文件系统中,我们可以将对虚拟文件的读写作为与内核中实体进行通信的一种手段,但是与普通文件不同的是,这些虚拟文件的内容都是动态创建的。本文对 /proc 虚拟文件系统进行了介绍,并展示了它的用法。最初开发 /proc 文件系统是为了提供有关系统中进程的信息。 阅读详情

/*

 * kernel programming test code
 *
 * Copyright (C) 2014 Sun Mingbao <sunmingbao@126.com>
 * Dual licensed under the MIT and/or GPL licenses.
 *
 */
 
#include <linux/init.h>
#include <linux/module.h>
#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/proc_fs.h>
#include <linux/string.h>

MODULE_AUTHOR("Sun Mingbao <sunmingbao@126.com>");
MODULE_DESCRIPTION("kernel programming test code");
MODULE_VERSION("1.0");
MODULE_LICENSE("Dual MIT/GPL");

#define  MODULE_NAME    "test"

#define    WRITE_CONSOLE(fmt, args...) \
    do \
    { \
        printk(KERN_ALERT fmt,##args); \
    } while (0)

#define    DBG_PRINT(fmt, args...) \
    do \
    { \
        WRITE_CONSOLE(MODULE_NAME"_DBG:%s(%d)-%s:\n"fmt"\n", __FILE__,__LINE__,__FUNCTION__,##args); \
    } while (0)


static struct proc_dir_entry *my_proc_dir;
    
static char proc_file_contents[] = "I love kernel programming very much\n";
static int  proc_file_len = sizeof(proc_file_contents)-1;

static int misc_info_read_proc(char *buffer, char **start, off_t offset, int length, int *eof, void *data)
{
    int ret;
    ret=snprintf(buffer, length, "%s", proc_file_contents+offset);

    if(ret+offset==proc_file_len)
        *eof = 1;

    return ret;
}

static int __init create_my_proc_entries(void)
{
    my_proc_dir = proc_mkdir(MODULE_NAME, NULL);
    
    create_proc_read_entry("misc_info"
        ,0
        , my_proc_dir
        , misc_info_read_proc
        , NULL);

    return 0;
}

static int __init test_init(void)
{
    int retval;

    DBG_PRINT("start");
    retval=create_my_proc_entries();
    if (retval < 0)
    {
        goto EXIT;
    }
    
    DBG_PRINT("start succeed");
    
EXIT:
    return retval;
}

static void __exit remove_my_proc_entries(void)
{
    remove_proc_entry("misc_info", my_proc_dir);
    remove_proc_entry(MODULE_NAME, NULL);
}

static void __exit test_exit(void)
{
    DBG_PRINT("quit");
    remove_my_proc_entries();
}

module_init(test_init);
module_exit(test_exit);

Linux内核实验(一):proc文件系统 一、引言Proc文件系统,以文件系统的形式向用户提供系统当前状态,动态地从同内核中读出所需的信息,只存在内存中,不占用外存空间。二、实验内容问题A: 1、cpu类型 2、内核版本问题B: 1、系统启动以来的时间,以dd:hh:mm:ss报告问题C: 1、cpu执行用户态、系统态、空闲态所用时间 2、多少次磁盘请求 3、多少次上下文切换 4、启动了多少次进程问题D: 1、内存总量 2 阅读详情

相关推荐

Linux内核的proc文件系统

在proc文件系统中,每个进程都会在/proc目录下创建一个以进程ID命名的子目录,该目录中包含了关于该进程的各种信息,比如进程的运行状态、资源占用情况和相关的文件描述符等。此外,/proc目录下还会有其他类似的文件和目录,比如系统的硬件信息、内存使用情况等。可以看到,CPU使用了统一编址的,外设映射在物理地址上,例如System RAM就是物理内存System RAM映射在40370000-4037007f上,其中一组gpio寄存器映射物理地址40370000-4037007f上。

新时代农民工 338

linux内核文档 proc,Linux内核proc文件系统使用示例

/** kernel programming test code** Copyright (C) 2014 Sun Mingbao * Dual licensed under the MIT and/or GPL licenses.**/#include #include #include #include #include #include MODULE_AUTHOR("Sun Mingbao ...

weixin_34352565的博客 181

proc文件系统使用举例

在linux下,如何使用proc文件系统与内核态进行通信,介绍proc程序的一般写法。

proc文件系统介绍以及常见使用方法

1、什么是proc文件系统 (1)proc是虚拟文件系统,虚拟的意思就是proc文件系统里的文件不对应硬盘上任何文件,我们用去查看proc目录下的文件大小都是零; (2)proc文件系统是开放给上层了解内核运行状态的窗口,通过读取proc系统里的文件,可以知道内核中一些重要数据结构的数值,从而知道内核的运行情况,也可以方便调试内核和应用程序; (3)proc文件系统的思路:在内核中构建一个虚拟文件系统/proc,内核运行时将内核中一些关键的数据结构以文件的方式呈现在/proc目录中的一些特定文件中,这样相

weixin_42031299的博客 1万+

linux下proc文件的读写(部分转载)

linux下proc读写及创建,注意事项,及案例分析。

SCHUNK SVH五指灵巧手 | 熵洛智能

雄克仿真五指机械手产品系列可以如人手操作那般完美地完成抓取操作。电子装置完全集成于腕关节中,使五指机械手几乎可以完成所有的人体手部动作。凭借带有9个驱动器的运动指骨,机械手可高精度地 执行多种抓取操作。富有弹性的抓取表面确保了对物体的可靠抓取。除了开启抓取和操作任务的全新领域之外,雄克还为在五指机械手的手势基础上进行人与机器人的交流开创了无限可能。编辑切换为居中添加图片注释,不超过 140 字(可选)产品特点:机械手有左手或右手两种版本适合移动应用耗能低,使用 24 V DC 在腕关节处完整集成了控制、调节

ShannonTech的博客 1334

read_proc的用法实例

说明 本测试程序主要参考了《linux设备驱动程序》第三版的第四章“调试技术”的‘/proc文件’一节。 并对一些关键函数进行了实例化。 以下是mod1.c #include #include #include #include   /* read_pr

刘末的专栏 1万+

一文掌握SourceTree使用(超级详细)

SourceTree是一款开源的代码仓库客户端工具,界面美观,操作简单,具有代码克隆、本地创建、提交代码、撤销修改,拉取(pull)代码、上传(push)代码、合并分支等操作。对于软件开发人员是一款必备的应用软件。

GM_115的博客 3万+

Linux中的/proc文件系统详解(C/C++代码实现)

proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。 系中当前运行的每一个进程都有对应的一个目录在 proc 下,以进程的 PID 号为目录名,它们是读取进程信息的接口。

chen1415886044的博客 5338

从AMBA到USB:手把手教你评估和选择Synopsys DesignWare里的免费商用IP

本文详细介绍了如何评估和选择Synopsys DesignWare中的免费商用IP,从AMBA到USB等关键模块。通过技术参数核对、验证环境评估和集成注意事项,帮助工程师高效利用这些经过硅验证的商业级IP,提升SoC设计效率。文章还探讨了免费IP与付费IP的边界策略,避免常见陷阱。

weixin_42683394的博客 298

NVIDIA Isaac GR00T N1.5 人形机器人强化学习入门教程(四)Lerobot、宇树 G1 等不同形态机器人微调教程

本笔记本是一份关于如何在新的数据集上对GR00T-N1预训练模型进行微调的教程。

2506_90492529的博客 1667

内核proc文件系统与seq接口(2)---内核proc文件系统编程接口

所有要使用 proc的内核模块都应当包含头文件。首先要了解以下proc编程中最重要的数据结构: struct proc_dir_entry { unsigned int low_ino; unsigned int namelen; const char *name; // 入口文件名 mode_t mode; // 文件访问权限模式 nlink_t nlink; uid_t uid; // 文件的用户ID gid_t gid; // 文件的组ID loff...

weixin_39094034的博客 703

qt医疗信息系统(HIS)

**UI 组件**: QWidget、QTextBrowser、QTableWidget、QGraphicsView 等。- **网络通信**: Qt Network (TCP/IP)- **DICOM 处理**: DCMTK 3.6.7。- **数据库**: SQLite (轻量、跨平台)**数据库文件**: `hospital.db`- **开发框架**: Qt 6 (C++)- 医疗影像 (DICOM) 查看器。**医疗影像 (DICOM) 查看器****电子病历 (EMR) 浏览器**

寒寒豆豆软件公司的博客 339

Linux 内核中的 proc 文件系统:从内核到用户空间

Linux 内核中的 proc 文件系统是一个虚拟文件系统,它提供了一种从用户空间访问内核信息的机制。proc 文件系统通过 proc 条目、seq_file 接口等组件,实现了内核信息的透明化和用户空间与内核的交互。工作也要流程化,proc 文件系统就像是系统中的信息窗口,它确保了内核信息的透明和用户空间与内核的灵活交互。在实际应用中,我们需要使用 seq_file 接口,注意并发访问,限制写入操作,及时清理,以及组织结构,以实现系统的最佳性能和可靠性。

jiang_style的博客 1524

超声相控阵合成孔径成像FPGA设计介绍

1.仿真预览 2.理论分析 系统的基本结构如下所示: 以上是实际中完整的结构,系统中会涉及到两块板子中的时钟,这个就是设计一个时钟采样同步的问题,即所谓的时钟同步。一般这种情况,往往使用内插的方式来解决。这是由于,在实际中,超生波接收到的信号是由本身系统发送出去反射回来得到的,因此从另外一方面将,其是同步的。但是在接收的时候通过内插的方法解决其中的延迟问题。 根据论文中的介绍,整个系统分为如下几个部分: ·模拟发送信号,这个部分由MATLAB产生测试数据并量...

FPGA/MATLAB学习教程/源码/项目合作开发 2072

巧妙解决网页弹窗重复出现问题

本文探讨了网页弹窗关闭后刷新重现的问题及解决方案。通过分析原生JavaScript实现的弹窗代码存在的缺陷,提出了使用jQuery改进的方法。关键点包括:利用event.preventDefault()阻止默认行为避免刷新,采用jQuery的hide("slow")方法实现优雅的关闭动画,确保关闭状态持久化。改进后的方案既解决了弹窗重复出现的问题,又提升了用户体验,为网页弹窗交互提供了更优的实现方式。文中提供了完整的HTML、CSS和JavaScript代码示例,便于开发者直接应用。

2501_90323865的博客 182

Linux内核模块开发:在Linux Proc文件系统中创建文件

Linux内核模块开发:在Linux Proc文件系统中创建文件

ych4444的博客 4796

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【linux kernel】linux内核伪文件系统—proc分析

linux内核伪文件系统—proc分析 文章目录linux内核伪文件系统—proc分析一、proc文件系统简介二、proc文件系统源码分析(2-1)linux内核下的/proc文件系统如何创建条目(2-2)linux内核如何初始化/proc文件系统三、总结 一、proc文件系统简介 首先/proc文件系统是一个接口,linux内核通过它可以获取一个linux系统上运行信息。很多用户空间程序都需要依靠/proc文件系统中的内容来完成它们的工作。如下图所示: linux内核中运行的每一个用户进程都会由/pro

iriczhao的博客 2369

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

[Linux]使用 /proc 文件系统来访问 Linux 内核的内容

原帖地址: 使用 /proc 文件系统来访问 Linux 内核的内容 这个虚拟文件系统在内核空间和用户空间之间打开了一个通信窗口 最初开发 /proc 文件系统是为了提供有关系统中进程的信息。但是由于这个文件系统非常有用,因此内核中的很多元素也开始使用它来报告信息,或启用动态运行时配置。 /proc 文件系统包含了一些目录(用作组织信息的方式)和虚拟文件。虚拟文件可以向用户呈现内核中的一些信息,...

wangyijieonline的博客 723

Linux内核模块编程-proc文件系统

什么是procproc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交的。 来自于百度百科 使用proc在内核态和用户态传递数据创建p

zyfforlinux 4234

linux内核态读写文件系统,对/proc文件系统进行读写操作

本博客之前的文章中多次涉及到/proc文件系统,下面的几条命令都在曾经的文章中出现过:cat /proc/interruptscat /proc/devicescat /proc/kallsyms | grep super_blocks第一条命令用于查看系统内已注册的中断信息,包括中断号、已接受的手段请求和驱动器名称等;第二条命令用于查看系统内已注册的字符设备和块设备信息,包括设备号和设备名称;第...

weixin_39998859的博客 1953

Linux内核模块编程-proc文件系统进阶

proc作为输入关于proc的一些基本概念和基本使用以及一些核心数据结构可以参考我的上一篇文章 在上一篇文章中提到了利用proc作为内核空间传递数据给用户空间的一种方式,那么proc能否作为用户空间传递数据给内核空间的一种手法呢?答案当然是可以的,熟悉linux的读者应该都知道我们不光光可以读取proc文件中的内容还是可以向proc文件中写入要传递的数据的,那么如何通过proc来向内核输入信息呢,

zyfforlinux 3037

linux proc 文件怎样传入内核的,使用 /proc 文件系统来访问 Linux 内核的内容

内核程序员可以使用的标准 API,LKM 程序员也可以使用。LKM 甚至可以导出内核使用的新变量和函数。有关 API 的完整介绍已经超出了本文的范围,因此我们在这里只是简单地介绍后面在展示一个更有用的 LKM 时所使用的几个元素。要在 /proc 文件系统中创建一个虚拟文件,请使用 create_proc_entry 函数。这个函数可以接收一个文件名、一组权限和这个文件在 /proc 文件系统中出...

weixin_42443651的博客 298

linux 内核模块 proc,Linux内核模块与_proc文件系统

Linux内核模块与_proc文件系统2007年第1期福建电脑163Linux内核模块与/proc文件系统文运平,韩秀娟(河南理工大学河南焦作454000)【摘要】:/proc文件系统是一个伪的文件系统,就是说它是一个实际上不存在的目录,它并不存在于某个磁盘上,而是由核心在内存中产生。本文就是利用Linux模块机制允许用户动态的修改内核、加载自己编写的程序,获取进程状态。:Linux文件系统内核模...

weixin_30788095的博客 415
上一篇: windows平台下搭建lighttpd+php+sqlite
下一篇: Linux内核中实现生产者与消费者(避免无效唤醒)
无忧老猪
博客等级 码龄18年 200粉丝 112原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值