游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

proc文件系统详解(附代码实例)

  1024G嵌入式资源大放送!包括但不限于CC、单片机、Linux等。私信回复1024,即可免费获取!前言
  上一篇:文件系统有很多,但这几个最为重要介绍了procfs(进程文件系统的缩写),包含一个伪文件系统(启动时动态生成的文件系统),用于通过内核访问进程信息。这个文件系统通常被挂载到proc目录,proc中不仅仅放了进程相关信息,也存放着很多系统相关的信息。
  这些信息都是内核开放给用户的,proc就是用户与内核直接交互的一个入口。从内核的角度看,内核是通过怎么样的方式把这些信息暴露给用户呢?这篇笔记我们来学习一下:内核创建proc节点的例子
  我们先来看一个例子(Linux4。9。88fsproccpuinfo。c):
  这就是创建proc下cpuinfo这个节点的相关代码,有了cpuinfo节点,我们就可以通过访问这个节点来得到cpu的一些信息:
  从以上代码中,我们可以看到,其用proccreate这个函数来创造相关节点的,这个函数是一个内联函数,存放在Linux4。9。88includelinuxprocfs。h下:staticinlinestructprocdirentryproccreate(constcharname,umodetmode,structprocdirentryparent,conststructfileoperationsprocfops){returnproccreatedata(name,mode,parent,procfops,NULL);}
  知识点:什么是内联函数?内联函数简单来说就是编译器将指定的函数体插入并取代每一处调用该函数的地方上下文,从而节省了每次调用函数带来的额外时间开支。
  一般用于能够快速执行的函数,因为在这种情况下函数调用的时间消耗显得更为突出。这种方法对于很小的函数也有空间上的益处,并且它也使得一些其他的优化成为可能。
  这么一看,似乎与宏有点相似?与宏有何不同?
  宏调用并不执行类型检查,甚至连正常参数也不检查,但是函数调用却要检查。
  C语言的宏使用的是文本替换,可能导致无法预料的后果,因为需要重新计算参数和操作顺序。
  在宏中的编译错误很难发现,因为它们引用的是扩展的代码,而不是程序员键入的。
  许多结构体使用宏或者使用不同的语法来表达很难理解。内联函数使用与普通函数相同的语言,可以随意的内联和不内联。
  内联代码的调试信息通常比扩展的宏代码更有用。
  以上介绍摘选自百度百科,关于内联更详细的介绍可自行查阅。
  接着上面,proccreate函数有四个参数,分别为:name:要创建的文件名。
  mode:文件的访问权限。
  parent:父文件夹的procdirentry指针。
  procfops:改文件的操作函数。
  看到这个函数,有没有感到很熟悉?我们在学习驱动基础的时候,有用到了devicecreate函数来创建节点:
  devicecreate创建的设备节点存放于dev目录下,而proccreate函数创建的与系统信息相关的节点存放于proc目录下。既然它们这么相似,下面我们就模仿编写驱动的方式来编写我们关于proc的测试代码。proc实践
  我们模仿字符设备驱动的编写方式,来编写基于proc的驱动。首先需要创建一个文件操作结构体helloprocoperations,创建一些helloprocopen、helloprocclose、helloprocread、helloprocwrite填到这个操作表里:微信公众号:嵌入式大杂烩includelinuxfs。hincludelinuxinit。hincludelinuxprocfs。hincludelinuxmodule。hincludelinuxuaccess。hstaticcharkernelbuf〔1024〕;defineMIN(a,b)(ab?a:b)staticinthelloprocopen(structinodenode,structfilefile){printk(sslined,FILE,FUNCTION,LINE);return0;}staticssizethelloprocread(structfilefile,charuserbuf,sizetsize,lofftoffset){interr;printk(sslined,FILE,FUNCTION,LINE);errcopytouser(buf,kernelbuf,MIN(1024,size));returnMIN(1024,size);}staticssizethelloprocwrite(structfilefile,constcharuserbuf,sizetsize,lofftoffset){interr;printk(sslined,FILE,FUNCTION,LINE);errcopyfromuser(kernelbuf,buf,MIN(1024,size));returnMIN(1024,size);}staticinthelloprocclose(structinodenode,structfilefile){printk(sslined,FILE,FUNCTION,LINE);return0;}staticconststructfileoperationshelloprocoperations{。ownerTHISMODULE,。openhelloprocopen,。readhelloprocread,。writehelloprocwrite,。releasehelloprocclose,};staticintinithelloprocinit(void){proccreate(helloproc,0,NULL,helloprocoperations);return0;}staticvoidexithelloprocexit(void){removeprocentry(helloproc,NULL);}moduleinit(helloprocinit);moduleexit(helloprocexit);MODULEDESCRIPTION(proctest);MODULELICENSE(GPL);
  最上边的那个例子中用了一个fsinitcall宏,这与moduleinit的底层是差不多相同的(有宏参数不一样):moduleinitinitcalldeviceinitcalldefineinitcall
  fsinitcalldefineinitcall
  为了方便,我们直接用moduleinit。
  Makefile文件:KERNDIRhomebook100askimx6ullsdkLinux4。9。88C表示将当前的工作目录切换到指定目录中,M表示模块源码目录,modules表示编译模块all:makeC(KERNDIR)Mpwdmodulesclean:makeC(KERNDIR)Mpwdmodulescleanrmrfmodules。orderobjm表示将proctest。c这个文件编译为proctest。ko模块objmproctest。o
  编译:
  传到板子里测试:
  可以看到,我们已经成功地在proc中留下了一个helloproc小脚印。可以看到,我们创建的基于proc下的驱动与创建基于dev下的真实的设备驱动的思路及套路是很相似的。这些都是属于内核的范畴,都是属于内核的东西,内核把想给我们能直接使用的东西(文件)都放于proc、dev等目录下,我们在应用端就可以很方便地访问这些文件开发我们的应用。猜你喜欢:
  静态链接与动态链接(Linux)
  Linux驱动基础篇:hello驱动
  Linux简单认识认识ELF文件
  如何查看Linux命令工具的源码?
  Linux下应用开发基础知识大总结
  Linux总线设备驱动模型
  1024G嵌入式资源大放送!包括但不限于CC、单片机、Linux等。私信回复1024,即可免费获取!

苹果手机6s老机型升级15。3。1开始也是在网上看了很多帖子关于升级问题,也在担心老机型升级后的卡顿问题和电池续航问题!犹豫了很久还是升级了,升级后的体验变得很丝滑,反应也很快,尤其是屏幕点击灵敏度很高,是之前……郜永华运营现场如何讲好一个融资的好故事?融资本身就是讲好一个关于资本的故事。而能讲故事的人举不胜数,能把一个故事讲好的人,在我有限的世界里,用手指头都能算得过来。当今最火的几个人,在互联网界,怕是如下列位:马云、乔布……各位有没有3000元以下的手机推荐?感谢您的阅读!各位有没有3000元以下的手机推荐。12256G的?在这个价位,到底什么样的价格,才适合我们能消费者呢?实际上在3000元以下的手机,我觉得其实已经非……强得很了不得,你能发现苹果文案中的乾坤吗?每年苹果秋季发布会,最让三口感兴趣的,不是手机又有哪些新突破,也不是苹果又开发了什么新功能,而是苹果又为新品想了什么鬼畜文案。毫无疑问,今年苹果的产品文案仍然没有让我失望……公司如何才能做好网站建设?随着时代的不断发展,用户对于互联网的要求也越来越高,现在一般的网站已经无法满足用户的需求了,用户更喜欢浏览一些突出个性化的网站,那么,如何建设一个风格迥异的网站呢?一起来了解一……涉及个税医疗外卖3月起,这些新规将落地实施一批新规将正式落地实施一起看看,哪些与你息息相关全国新规四部门:不得利用算法对消费者实施不合理价格差别待遇国家网信办等四部门联合发布《互联网信息服务算法……为什么现在好多地方的网络信号满格,网速却很卡?连网页都打不开为什么现在好多地方的网络信号满格,网速却很卡?我相信这个问题可能大多数的用户都是遇到类似的,有时候手机的信号总是满满的,却网速非常的慢,有时候连个网页也是打不开的,那么这里面究……荣耀8X系统还能升级吗?感谢您的阅读!这是很经典的荣耀手机。荣耀8X的参数,我们可以看看这款手机采用的是6。5英寸的屏幕,手机采用窄边框,全面屏。当然可能会有人觉得刘海屏的设计并不能……手机恢复出厂设置真的跟新机一样?别再被坑,看完这3点就懂了!大家都知道我们的手机一般分为两个手机系统,一个是安卓系统,一个就是苹果手机独立使用的ios系统,而安卓的系统又是公认的没有ios系统流畅,虽说现在这样的差距已经缩小了不少,但是……日食后会发生什么现象?日食后会发生什么现象?站在科学角度来讲,主要天灾,人祸等两个方面的影响,当然我们首先也要强调日食属于正常的天文奇观,但是不见得完全对地球生物无影响,所以我说往往会出现两个……荣耀V40轻奢版亮相天玑800U加持荣耀品牌自从从华为独立之后,仅在今年的1月份带来了一款手机荣耀V40,虽然这款手机市场反馈目前还不错,但大家期盼的肯定是更多的新机。今天有博主带来了爆料信息,荣耀的新机来……为什么说丰田BZ4X概念车是个大招?上海车展现场嘴上不愿意,身体很诚实。我有点想把这句话送给今年上海车展的丰田BZ4X概念车。因为丰田的社长丰田章男先生刚刚还在日本汽车制造商协会年终发布会上炮轰电动车,反手在几个……
华为Mate50Pro概念图后置徕卡5摄配2寸小窗,不用再贩下面给大家分享一组华为Mate50Pro的概念图。个人觉得这组概念图设计的非常漂亮,尤其是华为Mate50Pro的机身背面。它借鉴了其他手机的很多设计理念,但也进行了深加工。比……微软197亿美元收购美版科大讯飞Nuance,是时候重估科大爱因斯坦曾说过这样一句名言,我从不去想未来,因为它来得够快。对身处历史洪流中的人们来说,清晰判断当下时节的重要与深刻总是比较困难的。但即便如此,从2020年开始,已经有足……骨伽GEX750W金牌电源深度体验我只想做一款安静的电源电源作为攒机环节中不可忽视的一环,同样是750W的金牌电源,也许其中一个满足功率可以达到400W以上,而另一个也许只有350W,但是一款稳定出色的电源不仅可以输出稳定的电压,同……iPhone13震撼来袭,iPhone12价比百元机,果粉服9月15日凌晨1点,苹果正式发布iPhone13系列新产品,售价5199元。四款新iPhone都继承了直角中框设计,刘海区域缩小了20。iPhone13mini和iPho……什么才是高精度地图的云商业未来?随着L3级别自动驾驶车辆量产阶段的到来,以及高精度地图的社会赋能价值凸显,高精度地图开始进入规模生产和分发的商业时代。相比成熟的电子导航地图,高精度地图体量巨大、实时更新度高、……拥有人工智能技术的清华华智冰备受关注在这个科学不断进步的时代企业和政府对人工智能的应用逐渐升温。在决定企业产生经济效益的各个环节,都已能够看到人工智能的身影:AI核心是帮助人们安全生活、远程交易、便捷通行;深度学……诺基亚或再推经典复刻机型,诺基亚4G80004G曝光最近,关于诺基亚新机的消息陆续出现,除了旗舰机型外,经典复刻机型也是外界关注的重点。作为知名的手机品牌,诺基亚以往的经典机型还是有不少的。现在,再次有消息称,诺基亚计划带……家里有空气炸锅?试试不一样不用油炸的南瓜饼吧秋天到,南瓜俏,秋天可是吃南瓜的好季节。秋季是疾病高发期,多吃南瓜可预防疾病的发生。南瓜不但可以充饥也有一定的食疗价值。可以提高免疫力,保护肠胃助消化、降低血糖还可以解毒防癌,……北溪2号获德国批准仍需几个月或完美错过欧洲最寒冷的时期财联社(上海,编辑阿乐)讯,虽然北溪2号已经铺设完毕,但可能仍需要几个月的时间才能投入运营。目前,欧洲正面临能源短缺危机,待审批的用时正好让管道错过了欧洲冬季最寒冷的时期。……奥运第7日中国健儿风云榜之金牌中国代表团获得17金8银11铜,排名第1名【概述】第32届夏季奥林匹克运动会(GamesoftheXXXIIOlympiad),简称2020年东京奥运会(Tokyo202……不聊性价比只谈体验手机重度使用者带你认识iQOONeo32019年手机市场经过多轮清洗,大浪淘沙,在国内市场占据地位的,大家都有目共睹,各大手机品牌纷纷推出了自己的子品牌,来占据更加细化的手机市场。这一年对于vivo来说,及时推出i……不能看路边的小姐姐啦?全新奔驰S级展示眼神开车奔驰一直是豪华品牌的代名词,而奔驰S级又是品牌中的顶级豪华的代表,每一代奔驰S级的推出,都能毫无悬念的在豪华与科技上引领了未来汽车行业的走向。尤其是在科技层面更是颠覆了人们的认……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网