Linux下proc文件系统编程.doc

Linux下proc文件系统编程.doc

ID:51437809

大小:39.50 KB

页数:5页

时间:2020-03-24

Linux下proc文件系统编程.doc_第1页
Linux下proc文件系统编程.doc_第2页
Linux下proc文件系统编程.doc_第3页
Linux下proc文件系统编程.doc_第4页
Linux下proc文件系统编程.doc_第5页
资源描述:

《Linux下proc文件系统编程.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、/proc文件系统编程在Linux中有一个另外的机制来使内核及内核模块发送信息给进程——/proc文件系统。./proc文件系统在Linux中有一个另外的机制来使内核及内核模块发送信息给进程——/proc文件系统。/proc文件系统最初是设计使得容易得到进程的信息(从名字可以看出),现在却被任意一块有内容需要报告的内核使用,比如拥有模块列表的/proc/modules和拥有内存使用统计信息的/proc/meminfo。使用proc文件系统的方法很象使用设备驱动——你创建一个数据结构,使之包含/proc文件需要的全部信息,包括所有函数的句柄(在我

2、们的例子里只有一个,在试图读取/proc文件时调用)。然后,用init_module注册这个结构,用cleanup_module注销。我们使用proc_register_dynamic(注3.1)的原因是我们不希望决定以后在文件中使用的索引节点数,而是让内核来决定它,为了防止冲突。标准的文件系统是在磁盘上而不是在内存(/proc的位置在内存),在这种情况下节点数是一个指向文件的索引节点所在磁盘地址的指针。这个索引节点包含了文件的有关信息比如文件的访问权限以及指向磁盘地址的指真或者文件数据的位置。因为在文件打开或关闭时我们没有调用,所以在模块里无

3、处可放宏MOD_INC_USE_COUNT和MOD_DEC_USE_COUNT,而且如果文件被打开了或者模块被删除了,就没有办法来避免这个结果。下一章我们将会看到一个更困难的处理/proc的方法,但是也更加灵活,也能够解决这个问题。exprocfs.c/*procfs.c-createa"file"in/proc*Copyright(C)1998-1999byOriPomerantz*//*Thenecessaryheaderfiles*//*Standardinkernelmodules*/#include/*

4、We'redoingkernelwork*/#include/*Specifically,amodule*//*DealwithCONFIG_MODVERSIONS*/#ifCONFIG_MODVERSIONS==1#defineMODVERSIONS#include#endif/*Necessarybecauseweusetheprocfs*/#include/*In2.2.3/usr/include/linux/version.hin

5、cludesa*macroforthis,but2.0.35doesn't-soIaddit*hereifnecessary.*/#ifndefKERNEL_VERSION#defineKERNEL_VERSION(a,b,c)((a)*65536+(b)*256+(c))#endif/*Putdataintotheprocfsfile.Arguments=========1.Thebufferwherethedataistobeinserted,ifyoudecidetouseit.2.Apointertoapointertocharacte

6、rs.Thisisusefulifyoudon'twanttousethebufferallocatedbythekernel.3.Thecurrentpositioninthefile.4.Thesizeofthebufferinthefirstargument.5.Zero(forfutureuse?).UsageandReturnValue======================Ifyouuseyourownbuffer,likeIdo,putitslocationinthesecondargumentandreturnthenumb

7、erofbytesusedinthebuffer.Areturnvalueofzeromeansyouhavenofurtherinformationatthistime(endoffile).Anegativereturnvalueisanerrorcondition.ForMoreInformation====================ThewayIdiscoveredwhattodowiththisfunctionwasn'tbyreadingdocumentation,butbyreadingthecodewhichusedit.

8、Ijustlookedtoseewhatusestheget_infofieldofproc_dir_entrystruct(Iusedacombin

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。