利用seq file在proc下新增檔案

2021-06-09 17:45:30 字數 2482 閱讀 5522

源自:

#include

#include

#include

#include

#include

static

struct mutex lock;

static

struct list_head head;

struct my_data

;static

void add_one(

void

)static ssize_t _seq_write(

struct

file

*file

,const

char __user* buffer,

size_t

count

, loff_t *ppos)

static

int _seq_show(

struct seq_file*m,

void

*p)static

void

*_seq_start(

struct seq_file*m, loff_t*pos)

#if 0

其中seq_list_start在核心中的實現

struct list_head *seq_list_start(struct list_head *head, loff_t pos)

#endif

static

void

*_seq_next(

struct seq_file*m,

void

*p, loff_t*pos)

#if 0

struct list_head *seq_list_next(void *v, struct list_head *head, loff_t *ppos)

#endif

static

void _seq_stop(

struct seq_file*m,

void

*p)static

struct seq_operations _seq_ops=

;static

int _seq_open(

struct inode*inode,

struct

file

*file

)static

struct file_operations _seq_fops=

;static

void clean_all(

struct list_head*head)

}static

int __init init(

void

)entry-

>proc_fops=

&_seq_fops;

return 0;

}static

void __exit fini(

void

)module_init(init)

;module_exit(fini)

;

注:以上**需要核心版本不小於2.6.23,小版本核心可以從2.6.23核心**中抽取函式seq_list_start和seq_list_next。

上面的這段程式建立了乙個結構體my_data的雙向迴圈鍊錶(head),並且通過my_data proc檔案將其匯出到使用者空間,使用者空間的程式除了可以通過對my_data的讀操作來獲取my_data鍊錶中各個結構體中的value域的值之外,還能通過寫(write)系統呼叫新增乙個具有隨機value值的my_data結構體到雙向迴圈鍊錶中(從鍊錶的頭部新增)。

結果:gentux kernel # cat /proc/my_data

value: 474615376

value: 474615632

value: 474615568

gentux kernel # echo 0 > /proc/my_data

gentux kernel # cat /proc/my_data

value: 758528120

value: 474615376

value: 474615632

value: 474615568

補充:seq_printf函式的實現

int seq_printf(struct seq_file *m, const char *f, ...)

}m->count = m->size;

return -1;

}其中seq_file結構如下:

struct seq_file ;

proc_dir_entry結構如下:

struct proc_dir_entry ;

Linux下proc檔案系統詳解 proc

proc檔案系統是乙個偽檔案系統,它只存在記憶體當中,而不占用外存空間。它以檔案系統的方式為訪問系統核心資料的操作提供介面。使用者和應用程式可以通過proc得到系統的資訊,並可以改變核心的某些引數。這裡將介紹如何從 proc檔案系統中獲取與防火牆相關的一些效能引數,以及如何通過 proc檔案系統修改...

proc檔案系統及在LKM中建立proc檔案

proc檔案系統簡介 最初開發 proc 檔案系統是為了提供有關系統中程序的資訊。但是由於這個檔案系統非常有用,因此核心中的很多元素也開始使用它來報告資訊,或啟用動態執行時配置。proc 檔案系統包含了一些目錄 用作組織資訊的方式 和虛擬檔案。虛擬檔案可以向使用者呈現核心中的一些資訊,也可以用作一種...

如何利用Pro C直接讀取dbf檔案

為了使用c語言程式設計直接讀取dbf檔案,需要了解dbf檔案的二進位制檔案格式,下面給出簡要的說明。表檔案由頭記錄及資料記錄組成。頭記錄定義該錶的結構幷包含與表相關的其他資訊。頭記錄由檔案位置 0 開始。資料記錄1緊接在頭記錄之後 連續的位元組 包含欄位中實際的文字。記錄的長度 以位元組為單位 等於...