在編寫內核模塊/驅動程序,大多數時候一些結構被初始化爲指向某個特定的功能。作爲初學者,有人可以解釋這一點的重要性。使用結構設置功能
只見struct file_operations
一邊寫字符設備驅動程序
而且我發現,eventhough的函數聲明他們並不總是執行。任何人都可以提供幫助。例如,在內核源代碼:kernel/dma.c中,儘管如此,仍然需要
static const struct file_operations proc_dma_operations = {
.open = proc_dma_open,
.read = seq_read,
.llseek = seq_lseek,
.release = single_release,
};
被定義,只有proc_dma_open被實現。
否,其他功能(seq_read,seq_lseek和single_release)被簡單地別處實現。 – fge 2011-12-27 17:10:57
@fge我無法在內核源代碼的dma.c,dma.h或seq_file.h中找到'seq_read','single_release','seq_lseek'。 '' – user567879 2011-12-27 17:36:04
這個例子有點「奇怪」。通常,填充這些結構時,可以用指向你的函數的指針來填充它們。在這裏,您使用一些「標準」函數(seq_xxx,在fs/seq_file.c中實現)和您自己的函數(proc_dma_open)。 – ugoren 2011-12-27 19:48:16