file結構體
file結構體
structfile,定義于<;linux/fs.h>;,是設備驅動中第二個最重要的數據結構。注意file與用戶空間程序的FILE指針沒有任何關系。一個FILE定義在C庫中,從不出現在內核代碼中。一個structfile,另一方面,是一個內核結構,從不出現在用戶程序中。文件結構代表一個打開的文件。(它不特定給設備驅動;系統中每個打開的文件有一個關聯的structfile在內核空間)。它由內核在open時創建,并傳遞給在文件上操作的任何函數,直到最后的關閉。在文件的所有實例都關閉后,內核釋放這個數據結構。
導讀structfile,定義于<;linux/fs.h>;,是設備驅動中第二個最重要的數據結構。注意file與用戶空間程序的FILE指針沒有任何關系。一個FILE定義在C庫中,從不出現在內核代碼中。一個structfile,另一方面,是一個內核結構,從不出現在用戶程序中。文件結構代表一個打開的文件。(它不特定給設備驅動;系統中每個打開的文件有一個關聯的structfile在內核空間)。它由內核在open時創建,并傳遞給在文件上操作的任何函數,直到最后的關閉。在文件的所有實例都關閉后,內核釋放這個數據結構。
![](https://img.51dongshi.com/20250104/wz/18552079052.jpg)
系統大全為您提供structfile,定義于
,是設備驅動中第二個最重要的數據結構。注意file與用戶空間程序的FILE指針沒有任何關系。一個FILE定義在C庫中,從不出現在內核代碼中。一個structfile,另一方面,是一個內核結構,從不出現在用戶程序中。文件結構代表一個打開的文件。(它不特定給設備驅動;系統中每個打開的文件有一個關聯的structfile在內核空間)。它由內核在open時創建,并傳遞給在文件上操作的任何函數,直到最后的關閉。在文件的所有實例都關閉后,內核釋放這個數據結構。在內核源碼中,structfile的指針常常稱為file或者filp("filepointer")。我們將一直稱這個指針為filp以避免和結構自身混淆。因此,file指的是結構,而filp是結構指針。structfile的最重要成員在這展示。1.mode_tf_mode;文件模式確定文件是可讀的或者是可寫的(或者都是),通過位FMODE_READ和FMODE_WRITE.你可能想在你的open或者ioctl函數中檢查這個成員的讀寫許可,但是不需要檢查讀寫許可,因為內核在調用你的方法之前檢查。當文件還沒有為那種存取而打開時讀或寫的企圖被拒絕,驅動甚至不知道這個情況。2.loff_tf_pos;當前讀寫位置。loff_t在所有平臺都是64位(在gcc術語里是longlong)。驅動可以讀這個值,如果它需要知道文件中的當前位置,但是正常地不應該改變它;讀和寫應當使用它們作為最后參數而收到的指針來更新一個位置,代替直接作用于filp->f_pos.這個規則的一個例外是在llseek方法中,它的目的就是改變文件位置。3.unsignedintf_flags;這些是文件標志,例如O_RDONLY,O_NONBLOCK,和O_SYNC.驅動應當檢查O_NONBLOCK標志來看是否是請求非阻塞操作;其他標志很少使用。特別地,應當檢查讀/寫許可,使用f_mode而不是f_flags.所有的標志在頭文件中定義。4.structfile_operations*f_op;和文件關聯的操作。內核安排指針作為它的open實現的一部分,接著讀取它當它需要分派任何的操作時。filp->f_op中的值從不由內核保存為后面的引用;這意味著你可改變你的文件關聯的文件操作,在你返回調用者之后新方法會起作用。例如,關聯到主編號1(/dev/null,/dev/zero,等等)的open代碼根據打開的次編號來替代filp->f_op中的操作。這個做法允許實現幾種行為,在同一個主編號下而不必在每個系統調用中引入開銷。替換文件操作的能力是面向對象編程的"方法重載"的內核對等體。5.void*private_data;open系統調用設置這個指針為NULL,在為驅動調用open方法之前。你可自由使用這個成員或者忽略它;你可以使用這個成員來指向分配的數據,但是接著你必須記住在內核銷毀文件結構之前,在release方法中釋放那個內存。private_data是一個有用的資源,在系統調用間保留狀態信息,我們大部分例子模塊都使用它。6.structdentry*f_dentry;關聯到文件的目錄入口(dentry)結構。設備驅動編寫者正常地不需要關心dentry結構,除了作為filp->f_dentry->d_inode存取inode結構。真實結構有多幾個成員,但是它們對設備驅動沒有用處。我們可以安全地忽略這些成員,因為驅動從不創建文件結構;它們真實存取別處創建的結構。???以上就是系統大全給大家介紹的如何使的方法都有一定的了解了吧,好了,如果大家還想了解更多的資訊,那就趕緊點擊系統大全官網吧。??本文來自系統大全http:///如需轉載請注明!推薦:win7純凈版
file結構體
structfile,定義于<;linux/fs.h>;,是設備驅動中第二個最重要的數據結構。注意file與用戶空間程序的FILE指針沒有任何關系。一個FILE定義在C庫中,從不出現在內核代碼中。一個structfile,另一方面,是一個內核結構,從不出現在用戶程序中。文件結構代表一個打開的文件。(它不特定給設備驅動;系統中每個打開的文件有一個關聯的structfile在內核空間)。它由內核在open時創建,并傳遞給在文件上操作的任何函數,直到最后的關閉。在文件的所有實例都關閉后,內核釋放這個數據結構。
為你推薦