源自:
#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緊接在頭記錄之後 連續的位元組 包含欄位中實際的文字。記錄的長度 以位元組為單位 等於...