教你如何註冊proc檔案系統

2021-06-21 01:52:40 字數 2142 閱讀 9521

分類: linux

有些時候編寫的核心模組,為了具有更高的可除錯性,通常會使用proc檔案系統。例如netfilter的layer7模組。

下面是在2.6.24下的註冊proc檔案系統,並實現讀寫功能的**。

在/proc/net下建立目錄procdir,在該目錄下註冊procfile檔案。

#

include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

ctype

.h>

#include

module_license(

"gpl");

module_author(

"ltw");

module_description(

"make proc file");

static

struct nf_hook_ops procfile;

static

int procnum=20;

static

struct proc_dir_entry* father;

unsigned

int procfile_func(

unsigned

int hooknum,

struct sk_buff *skb,

const

struct net_device *in,

const

struct net_device *out,

int(

*okfn)

(struct sk_buff*))

static

int my_atoi(

const

char

*s)}

}/* write out num_packets to userland. */

static

int procfile_read_proc(

char

* page,

char

** start, off_t off,

intcount

,int

*eof

,void

* data)

/* read in num_packets from userland */

static

int procfile_write_proc(

struct

file

*file

,const

char

* buffer,

unsigned

long

count

,void

*data)

if(copy_from_user(foo, buffer,

count))

procnum= my_atoi(foo)

;kfree (foo)

;/* this has an arbitrary limit to make the math easier. i'm lazy.

but anyway, 99 is a lot! if you want more, you're doing it wrong! */

if(procnum > 99)

else

if(procnum < 1)

return

count;}

static

void procfile_cleanup_proc(

void

)static

void procfile_init_proc(

void

)static

int __init procfile_init(

void

)static

void __exit procfile_exit(

void

)module_init(procfile_init)

;module_exit(procfile_exit)

;

Proc檔案系統

include static struct proc dir entry proc null int read proc char page,char start,off t off,int count,int eof,void data len sprintf page len,debug mod...

proc檔案系統

linux 將一切事物都看成檔案,硬體裝置在檔案系統中也有相應的條目。我們使用底層系統呼叫這樣一種特殊方式通過 dev目錄中的檔案來訪問硬體。控制硬體的軟體驅動程式通常可以以某種特定方式配置,或者能夠報告相關資訊。用於與裝置驅動程式進行通訊的工具在過去就已經十分常見,近來年,傾向於提供更一致的方式來...

proc檔案系統

proc檔案系統是由核心實現的檔案系統。當使用者態訪問 proc下檔案時,實際上是呼叫核心中和該檔案對應的特定函式。一般用proc檔案來實現核心 驅動的呼叫。大部分proc檔案是唯讀的,用於獲取核心資訊 還有一些proc檔案是可寫的,當使用者態改變了proc檔案的內容時,會呼叫核心的函式,從而改變核...