file operatons 方法清單

2021-05-22 06:37:05 字數 2068 閱讀 4954

struct module *owner

第乙個file_operations欄位並不是乙個操作;相反,它是指向"擁有"該結構的模組的指標。核心使用這個欄位以避免在模組的操作正在被使用時解除安裝該模組。幾乎都會被初始化為this_module,定義在的巨集

loff_t (*llseek)(struct file *,loff_t int);

方法llseek用來修改檔案的當前讀寫位置,並將新位置作為(正的)返回值返回。引數loff_t乙個"長偏移量",即使在32位平台上頁至少占用64位的資料寬度,出錯時返回乙個負的返回值。如果這個函式指標是null,對seek的呼叫將會以某種不可預期的方式修改file結構中的位置計數器。

ssize_t (*read)(struct file *,char __user *,size_t,loff_t *);

用來從裝置上讀取資料。該函式指標被賦為null時,將導致read系統呼叫出錯並返回-einval(invalid argument).函式返回非負值表示成功讀取的位元組數(目標台上固有資料型別)

ssize_t (*aio_read)(struct kiocb *,char __user *,size_t,loff_t);

初始化乙個非同步的讀取操作,即在函式返回之前可能不會完成的讀取操作。如果該方法為null,所有的操作將通過read處理。

ssize_t(*write)(struct file *,const char __user *,size_t,loff_t *);

向裝置傳送資料。如果沒有這個函式,write系統呼叫會向程式返回乙個-einval.如果返回值非負,則表示成功寫入的位元組數。

ssize_t(*aio_write)(struct kiocb *,const char __user *,size_t,loff_t *);

初始化裝置上的非同步寫入操作。

int (*readdir) (struct file *,void *,filldir_t);

對於裝置檔案來說,這個字段應該為null。它僅用於讀取目錄,只對檔案系統有用。

unsigned int (*poll ) (struct file *,struct poll_table_struct *)

poll方法是poll,epoll和 select這三個系統呼叫的後端實現。這三個系統呼叫可用來查詢某個或多個檔案描述符上的讀取或寫入是否會被阻塞。poll方法應該返回乙個位掩碼,用來指出非阻塞的讀取或寫入是否可能,並且也會想核心提供將呼叫程序置於休眠狀態知道i/o變為可能的資訊。如果驅動程式將poll方法定義為null,則裝置會認為既可讀也可寫,並且不會被阻塞。

int (*ioctl)(struct inode *,struct file *,unsigned int,unsigned long);

系統呼叫ioctl提供了一種執行設別特定命令的方法(如格式化軟盤的某個磁軌,這既不是讀操作也不是寫操作)。另外,核心還能識別一部分ioctl命令,而不必強調用fops表中的iocl.如果裝置不提供ioctl入口點,則對於任何核心未預先定義的請求,ioctl系統呼叫將返回錯誤。

int (*mmap)(struct file *,struct vm_area_struct *);

mmap用於請求將裝置記憶體對映到程序位址空間。如果裝置沒有實現這個方法,那麼mmap系統呼叫將返回-enodev

int (*open)(struct inode *,struct file *)

儘管這是種是對裝置檔案執行的第乙個操作,然而卻並不要求驅動程式一定要宣告乙個相應的方法。如果這個入口為null,裝置的開啟操作永遠成功,但系統不會通知驅動程式。

int (*flush)(struct file *)

對flush操作的呼叫發生在程序關閉裝置檔案描述符副本的時候,它應該執行(並等待)裝置上尚未完結的操作。請不要將它同使用者程式使用的fsync操作相混淆。目前,flush僅僅用於少數幾個驅動程式,比如,scsi磁帶驅動程式用它來確保裝置被關閉之前所有的資料都被寫入到磁帶中。如果flush設定為空,核心將簡單的忽略使用者應用程式的請求。

int (*release)(struct inode *,struct file *);

當file結構被釋放時,將呼叫這個操作。與open相仿,也可以將release設定為null.

方法的呼叫 this方法 構造方法

1 呼叫者和被呼叫者方法位於同一類中,呼叫形式如下 this 方法名 在大多數情況下,關鍵字this可以忽略 呼叫者位於被呼叫方法所在類的外部 物件名.方法名或者類名.方法名 抽象類只能作為父類,不能例項化。只能被繼承 抽象方法是一種只有方法宣告而沒有方法體定義的特殊方法,最後有乙個分號 而沒有方法...

例項方法 靜態方法 類方法

首先新建乙個日期date類,屬性為年,月,日,tomorrow 是例項方法,這個最常見,比較簡單,例項方法的第乙個引數是例項物件self 當我們傳入的年月日是2018 6 4這樣的形式,我們就需要先進行字串處理,在這裡使用了元組的拆包 這是最基本的方式,但是這樣寫會有乙個問題,每次傳參都需要進行字串...

類方法 物件方法 原型方法

js類方法,物件方法,原型的理解 function people name 類方法 people.run function 原型方法 people.prototype.introducechinese function 測試 var p1 new people windking p1.introdu...