linux驅動標頭檔案位置的說明

2021-06-19 11:13:07 字數 3652 閱讀 2207

**:

在不同版本的核心原始碼上,標頭檔案所在的位置是不同的,比如說在

#include

#include

同樣是regs-gpio.h,是在比較低的版本(比如2.6.25)上位於arch/arm/include/asm中,而mach/regs-gpio.h則是位於arch/arm/mach-s3c2410/include/mach中,2.6.30版本的核心是這種結構,所以,要根據所採用的不同的版本核心來修改標頭檔案的位置!俺就是照抄別人的**時,編譯不通過,出現找不到標頭檔案的現象。

#include 是在linux-2.6.29/include/linux下面尋找原始檔。

#include 是在linux-2.6.29/arch/arm/include/asm下面尋找原始檔。

#include 是在linux-2.6.29/arch/arm/mach-s3c2410/include/mach下面尋找原始檔。

#include在linux-2.6.31_tx2440a20100510\linux-2.6.31_tx2440a\arch\arm\plat-s3c\include\plat

#include//最基本的檔案,支援動態新增和解除安裝模組。hello world驅動要這乙個檔案就可以了

#include //包含了檔案操作相關struct的定義,例如大名鼎鼎的struct file_operations

//包含了struct inode 的定義,minor、major的標頭檔案。

#include //包含了對返回值的巨集定義,這樣使用者程式可以用perror輸出錯誤資訊。

#include //對一些特殊型別的定義,例如dev_t, off_t, pid_t.其實這些型別大部分都是unsigned int型通過一連串的typedef變過來的,只是為了方便閱讀。

#include //對字元裝置結構cdev以及一系列的操作函式的定義。//包含了cdev 結構及相關函式的定義。

#include //等代佇列相關標頭檔案//核心等待佇列,它包含了自旋鎖的標頭檔案

#include//初始化標頭檔案

#include//驅動要寫入核心,與核心相關的標頭檔案

#include //包含了kcalloc、kzalloc記憶體分配函式的定義。

#include //包含了copy_to_user、copy_from_user等核心訪問使用者程序記憶體位址的函式定義。

#include//包含了device、class 等結構的定義

#include //包含了ioremap、iowrite等核心訪問io記憶體等函式的定義。

#include//包含了miscdevice結構的定義及相關的操作函式。

#include//使用中斷必須的標頭檔案

#include //使用中斷必須的標頭檔案

#include //包含set_bit等位操作函式,實現input子系統時可用。

#include//使用訊號量必須的標頭檔案

#include//自旋鎖

#include //核心等待佇列中要使用的task_normal、task_interruptible包含在這個標頭檔案

#include//fifo環形佇列

#include//核心定時器

#include//中斷處理 

#include //延時標頭檔案

#include //與處理器相關的中斷

#include//作業系統中斷

#include //與處理器相關的入口

//#include//與處理器相關的io口操作

#include//同上

//#include//與處理器相關的硬體

#include//同上

#include //輪詢檔案

#include //作業系統相關的io口檔案

#include //標準輸入輸出

#include //標準庫

#include

#include //io控制

標頭檔案主目錄include

頭檔案目錄中總共有32個.h標頭檔案。其中主目錄下有13個,asm子目錄中有4個,linux子目錄中有10個,sys子目錄中有5個。這些標頭檔案各自的功能如下,具體的作用和所包含的資訊請參見第14章。

:a.out標頭檔案,定義了a.out執行檔案格式和一些巨集。

:常數符號標頭檔案,目前僅定義了i節點中i_mode欄位的各標誌位。

:字元型別標頭檔案,定義了一些有關字元型別判斷和轉換的巨集。

:錯誤號標頭檔案,包含系統中各種出錯號。(linus從minix中引進的)。

:檔案控制標頭檔案,用於檔案及其描述符的操作控制常數符號的定義。

:訊號標頭檔案,定義訊號符號常量,訊號結構以及訊號操作函式原型。

:標準引數標頭檔案,以巨集的形式定義變數引數列表。主要說明了乙個型別(va_list)和3個巨集(va_start, va_arg和va_end),用於vsprintf、vprintf、vfprintf函式。

:標準定義標頭檔案,定義了null, offsetof(type, member)。

:字串標頭檔案,主要定義了一些有關字串操作的嵌入函式。

:終端輸入輸出函式標頭檔案,主要定義控制非同步通訊口的終端介面。

:時間型別標頭檔案,主要定義了tm結構和一些有關時間的函式原形。

:linux標準標頭檔案,定義了各種符號常數和型別,並宣告了各種函式。如,定義了__library__,則還包括系統呼叫號和內嵌彙編_syscall0()等。

:使用者時間標頭檔案,定義了訪問和修改時間結構以及utime()原型。

(1)體系結構相關標頭檔案子目錄include/asm

這些標頭檔案主要定義了一些與cpu體系結構密切相關的資料結構、巨集函式和變數。共4個檔案。

:i/o標頭檔案,以巨集的嵌入匯程式設計序形式定義對i/o埠操作的函式。

:記憶體拷貝標頭檔案,含有memcpy()嵌入式彙編巨集函式。

:段操作標頭檔案,定義了有關段暫存器操作的嵌入式彙編函式。

:系統標頭檔案,定義了設定或修改描述符/中斷門等的嵌入式彙編巨集。

(2)linux核心專用標頭檔案子目錄include/linux

:核心配置標頭檔案,定義鍵盤語言和硬碟型別(hd_type)可選項。

:軟碟機標頭檔案,含有軟盤控制器引數的一些定義。

:檔案系統標頭檔案,定義檔案表結構(file,buffer_head,m_inode等)。

:硬碟引數標頭檔案,定義訪問硬碟暫存器埠、狀態碼和分割槽表等資訊。

:head標頭檔案,定義了段描述符的簡單結構,和幾個選擇符常量。

:核心標頭檔案,含有一些核心常用函式的原形定義。

:記憶體管理標頭檔案,含有頁面大小定義和一些頁面釋放函式原型。

: 排程程式標頭檔案,定義了任務結構task_struct、初始任務0的資料,

以及一些有關描述符引數設定和獲取的嵌入式彙編函式巨集語句。

:系統呼叫標頭檔案,含有72個系統呼叫c函式處理程式,以"sys_"開頭。

:tty標頭檔案,定義了有關tty_io,序列通訊方面的引數、常數。

(3)系統專用資料結構子目錄include/sys

: 檔案狀態標頭檔案,含有檔案或檔案系統狀態結構stat{}和常量。

:定義了程序中執行時間結構tms以及times()函式原型。

:型別標頭檔案,定義了基本的系統資料型別。

:系統名稱結構標頭檔案。

:等待呼叫標頭檔案,定義系統呼叫wait()和waitpid()及相關常數符號。

參考文章:

linux驅動標頭檔案位置的說明

在不同版本的核心原始碼上,標頭檔案所在的位置是不同的,比如說在 include include 同樣是regs gpio.h,是在比較低的版本 比如2.6.25 上位於arch arm include asm中,而mach regs gpio.h則是位於arch arm mach s3c2410 i...

linux驅動標頭檔案位置和標頭檔案的說明

在不同版本的核心原始碼上,標頭檔案所在的位置是不同的,比如說在 include include 同樣是regs gpio.h,是在比較低的版本 比如2.6.25 上位於arch arm include asm中,而mach regs gpio.h則是位於arch arm mach s3c2410 i...

linux驅動標頭檔案說明

驅動程式 include 是在linux 2.6.29 include linux下面尋找原始檔。include 是在linux 2.6.29 arch arm include asm下面尋找原始檔。include 是在linux 2.6.29 arch arm mach s3c2410 inclu...