file結構中的private data

2021-07-24 19:06:10 字數 830 閱讀 4991

這個是linux下連線vfs檔案系統框架和不同檔案/檔案系統底層實現之間的乙個核心資料結構

,雖然它只是乙個指標,但是乙個指標可以解決所有問題。我們回想一下使用者態執行緒的建立結構,函式的入口同樣是乙個void*指標,而千言萬語匯成一根指標,詩可以興、可以觀、可以群、可以怨,可以解決所有問題。

因為file是vfs框架的乙個基本概念,它要支援檔案操作結構,例如open/read/write/release之類的介面,甚至還有poll等,只有有了這些結構,它們才能被納入vfs這個大家庭。但是對於不同的裝置檔案來說,它們只是披著檔案外衣的裝置,所以他要有自己特有的結構來和裝置交流,而這private_data就是這個連線的紐帶。這樣說可能還是比較抽象,最後是多看一些**感受可能會深一些。

ldd3中說到open應完成以下工作:

1.檢查裝置特定的錯誤(注入裝置未就緒或類似的硬體問題)。

2.如果裝置是首次開啟,則對其進行初始化。

3.如有必要,更新f_op指標。

4.分配並填寫置於filp->private_data裡的資料結構。

宋寶華的linux裝置驅動開發詳解,93頁寫到私有資料指標private_data在裝置驅動中背廣泛使用,大多數指向裝置驅動自定義用於描述裝置的結構體。

下面是之前我遇到過的一些使用private_data的一些檔案:

1、tty裝置

static ssize_t tty_read(struct file * file, char __user * buf, size_t count, 

loff_t *ppos)

釋放裝置:

reference

[1].

Linux中的file結構體解析

struct file file結構體 struct file結構體定義在include linux fs.h中定義。檔案結構體代表乙個開啟的檔案,系統中的每個開啟的檔案在核心空間都有乙個關聯的 struct file。它由核心在開啟檔案時建立,並傳遞給在檔案上進行操作的任何函式。在檔案的所有例項都...

FILE指標結構,glibc

在glibc中,gdb core除錯,顯示file 指標內容 file寫出現了core檔案 1 可以看到 io write base 錯誤,因此該檔案指標file已經被破壞。所以會出現segment fault錯誤。通常 io write base 與 io read base都指向同一區域。表示當...

linux中的file命令

file命令用於檢視檔案型別,今天了解到了,自己動手測了一下,寫篇文章記錄一下。localhost staticlibrary ls a.out libtest.a libtest.so main.c test.c test.h test.o localhost staticlibrary file...