proc檔案系統是一種無儲存的檔案系統,當讀其中的檔案時,其內容動態生成,當寫檔案時,檔案所關聯的寫函式被呼叫。每個proc檔案都關聯特定的讀寫函式,因而它提供了另外的一種和核心通訊的機制:核心部件可以通過該檔案系統向使用者空間提供介面來提供查詢資訊、修改軟體行為,因而它是一種比較重要的特殊檔案系統。
由於proc檔案系統以檔案的形式向使用者空間提供了訪問介面,這些介面可以用於在執行時獲取相關部件的資訊或者修改部件的行為,因而它是非常方便的乙個介面。核心中大量使用了該檔案系統。proc檔案系統可以掛載在目錄樹的任意位置,不過通常掛載在/proc下,它大致包含了如下資訊:
記憶體管理;
每個程序的相關資訊;
檔案系統;
裝置驅動程式;
系統匯流排;
電源管理;
終端;系統控制引數;
網路。這些資訊幾乎涵蓋核心的所有部分,因而改檔案系統是了解系統資訊的乙個很重要的部件。由於proc檔案系統的檔案的內容取決於實現該檔案的核心部件,因而各個檔案的實現可能存在很大的不同。
由於proc檔案系統是以檔案的形式存在的,因而我們可以通過cat命令來直接訪問檔案(當然是在遵循檔案訪問許可權的前提下)。
sylixos中proc檔案系統目前只支援讀操作,不支援寫操作。
使用proc檔案系統之前必須將其初始化並且掛載到系統中。proc檔案系統的初始化主要通過建立字元裝置完成。
呼叫api_procfsdrvinstall安裝procfs檔案系統驅動程式,proc檔案系統提供了open、close、read、write、statget、ioctl和readlink等函式;
呼叫api_procfsdevcreate建立proc裝置,同時初始化proc檔案系統的各個元件。
proc檔案系統使用結構體plw_procfs_node_op來向核心提供傳輸函式集合,其詳細描述如程式清單 4.1所示。
程式清單 4.1 傳輸函式集#include
typedef
struct lw_procfs_node_op lw_procfs_node_op; typedef lw_procfs_node_op *plw_procfs_node_op;
proc檔案系統使用結構體plw_procfs_node_msg來向核心提供proc節點資訊,其詳細描述如程式清單 4.2所示。
程式清單 4.2 proc節點資訊#include
typedef
struct lw_procfs_node_message lw_procfs_node_msg; typedef lw_procfs_node_msg *plw_procfs_node_msg;
pfsnm_oftptr:檔案當前指標,節點驅動程式不要處理此變數;
pfsnm_pvbuffer:檔案記憶體緩衝;
pfsnm_stbuffersize:檔案當前緩衝大小;
pfsnm_stneedsize:預估的需要緩衝的大小;
pfsnm_strealsize:檔案真實大小,由節點驅動程式確定。
sylixos提供__procfsfindnode介面查詢乙個節點;
sylixos提供api_procfsmakenode介面建立乙個節點;
sylixos提供__procfsremovenode介面刪除乙個節點;
sylixos提供api_procfsremovenode介面刪除乙個節點,此api可能產生推遲刪除;
sylixos提供api_procfsallocnodebuffer介面為乙個節點開闢快取;
sylixos提供api_procfsfreenodebuffer介面釋放節點快取;
sylixos提供api_procfsnodebuffersize介面獲得節點快取大小;
sylixos提供api_procfsnodebuffer介面獲得節點快取指標;
sylixos提供api_procfsnodemessagevalue介面獲得節點資訊私有資料指標;
sylixos提供api_procfsnodesetrealfilesize介面設定實際的buffer大小;
sylixos提供api_procfsnodegetrealfilesize介面獲取實際的buffer大小。
sylixos中可以通過cat命令檢視proc檔案系統中儲存的資訊。
比如,proc檔案系統中提供的cpuinfo可以用來獲取cpu資訊,如圖 6.1所示。
圖 6.1 /prco/cpuinfo資訊
proc 檔案系統中wakelock檔案
這個檔案詳細記錄了系統中init的wakelock的使用情況 以下是乙個例子 echo test wakelock sys power wake lock 然後 cat proc wakelocks 可獲得當前狀態 下面是摘除的部分 name count expire count wake coun...
proc檔案系統及在LKM中建立proc檔案
proc檔案系統簡介 最初開發 proc 檔案系統是為了提供有關系統中程序的資訊。但是由於這個檔案系統非常有用,因此核心中的很多元素也開始使用它來報告資訊,或啟用動態執行時配置。proc 檔案系統包含了一些目錄 用作組織資訊的方式 和虛擬檔案。虛擬檔案可以向使用者呈現核心中的一些資訊,也可以用作一種...
Proc中單獨檔案編譯 make 檔案例子
oralibpath l oracle product 9.2.0 lib oralib lclntsh lnbeq9 lnhost9 lnus9 lnldap9 lldapclnt9 lnsslb9 lnoname9 lntcp9 lntcps9 lnsslb9 lntcp9 lntns9 ldl...