linux驅動標頭檔說明

來源:互聯網
上載者:User

http://hi.baidu.com/%BB%F0%D0%C7%C6%B0%B3%E6911/blog/item/3c01cb8c3c5bccab0f244491.html

驅動程式:
#include <linux/***.h> 是在linux-2.6.29/include/linux下面尋找源檔案。
#include <asm/***.h> 是在linux-2.6.29/arch/arm/include/asm下面尋找源檔案。
#include <mach/***.h> 是在linux-2.6.29/arch/arm/mach-s3c2410/include/mach下面尋找源檔案。

#include <plat/regs-adc.h>在linux-2.6.31_TX2440A20100510\linux-2.6.31_TX2440A\arch\arm\plat-s3c\include\plat
#include <linux/module.h> //最基本的檔案,支援動態添加和卸載模組。Hello World驅動要這一個檔案就可以了
#include <linux/fs.h> //包含了檔案操作相關struct的定義,例如大名鼎鼎的struct file_operations

                                  //包含了struct inode 的定義,MINOR、MAJOR的標頭檔。
#include <linux/errno.h> //包含了對傳回值的宏定義,這樣使用者程式可以用perror輸出錯誤資訊。
#include <linux/types.h> //對一些特殊類型的定義,例如dev_t, off_t, pid_t.其實這些類型大部分都是unsigned int型通過一連串的typedef變過來的,只是為了方便閱讀。
#include <linux/cdev.h> //對字元裝置結構cdev以及一系列的操作函數的定義。//包含了cdev 結構及相關函數的定義。
#include <linux/wait.h> //等代隊列相關標頭檔//核心等待隊列,它包含了自旋鎖的標頭檔

#include <linux/init.h>
#include <linux/kernel.h>            

#include <linux/slab.h>              //包含了kcalloc、kzalloc記憶體配置函數的定義。
#include <linux/uaccess.h>        //包含了copy_to_user、copy_from_user等核心訪問使用者進程記憶體位址的函數定義。
#include <linux/device.h>           //包含了device、class 等結構的定義
#include <linux/io.h>                  //包含了ioremap、iowrite等核心訪問IO記憶體等函數的定義。
#include <linux/miscdevice.h>    //包含了miscdevice結構的定義及相關的操作函數。
#include <linux/interrupt.h>        //使用中斷必須的標頭檔
#include <mach/irqs.h>             //使用中斷必須的標頭檔
#include <asm/bitops.h>           //包含set_bit等位操作函數,實現Input子系統時可用。
#include <linux/semaphore.h>   //使用訊號量必須的標頭檔
#include <linux/spinlock.h>       //自旋鎖

#include <linux/sched.h>          //核心等待隊列中要使用的TASK_NORMAL、TASK_INTERRUPTIBLE包含在這個標頭檔
#include <linux/kfifo.h>             //fifo環形隊列
#include <linux/timer.h>           //核心定時器
#include <linux/input.h>           //中斷處理

標頭檔主目錄include

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

<a.out.h>:a.out標頭檔,定義了a.out執行檔案格式和一些宏。
<const.h>:常數符號標頭檔,目前僅定義了i節點中i_mode欄位的各標誌位。
<ctype.h>:字元類型標頭檔,定義了一些有關字元類型判斷和轉換的宏。
<errno.h>:錯誤號碼標頭檔,包含系統中各種出錯號。(Linus從minix中引進的)。
<fcntl.h>:檔案控制標頭檔,用於檔案及其描述符的操作控制常數符號的定義。
<signal.h>:訊號標頭檔,定義訊號符號常量,訊號結構以及訊號操作函數原型。
<stdarg.h>:標準參數標頭檔,以宏的形式定義變數參數列表。主要說明了一個類型(va_list)和3個宏(va_start, va_arg和va_end),用於vsprintf、vprintf、vfprintf函數。
<stddef.h>:標準定義標頭檔,定義了NULL, offsetof(TYPE, MEMBER)。
<string.h>:字串標頭檔,主要定義了一些有關字串操作的嵌入函數。
<termios.h>:終端輸入輸出函數標頭檔,主要定義控制非同步通訊口的終端介面。
<time.h>:時間類型標頭檔,主要定義了tm結構和一些有關時間的函數原形。
<unistd.h>:Linux標準標頭檔,定義了各種符號常數和類型,並聲明了各種函數。如,定義了__LIBRARY__,則還包括系統調用號和內嵌彙編_syscall0()等。
<utime.h>:使用者時間標頭檔,定義了訪問和修改時間結構以及utime()原型。

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

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

<asm/io.h>:I/O標頭檔,以宏的嵌入組譯工具形式定義對I/O連接埠操作的函數。
<asm/memory.h>:記憶體拷貝標頭檔,含有memcpy()嵌入式彙編宏函數。
<asm/segment.h>:段操作標頭檔,定義了有關段寄存器操作的嵌入式彙編函數。
<asm/system.h>:系統標頭檔,定義了設定或修改描述符/中斷門等的嵌入式彙編宏。

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

<linux/config.h>:核心配置標頭檔,定義鍵盤語言和硬碟類型(HD_TYPE)可選項。
<linux/fdreg.h>:軟碟機標頭檔,含有磁碟片控制器參數的一些定義。
<linux/fs.h>:檔案系統標頭檔,定義檔案表結構(file,buffer_head,m_inode等)。
<linux/hdreg.h>:硬碟參數標頭檔,定義訪問硬碟寄存器連接埠、狀態代碼和分區表等資訊。
<linux/head.h>:head標頭檔,定義了段描述符的簡單結構,和幾個選擇符常量。
<linux/kernel.h>:核心標頭檔,含有一些核心常用函數的原形定義。
<linux/mm.h>:記憶體管理標頭檔,含有頁面大小定義和一些頁面釋放函數原型。
<linux/sched.h>: 發送器標頭檔,定義了任務結構task_struct、初始任務0的資料,
以及一些有關描述符參數設定和擷取的嵌入式彙編函數宏語句。
<linux/sys.h>:系統調用標頭檔,含有72個系統調用C函數處理常式,以"sys_"開頭。
<linux/tty.h>:tty標頭檔,定義了有關tty_io,串列通訊方面的參數、常數。

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

<sys/stat.h>: 檔案狀態標頭檔,含有檔案或檔案系統狀態結構stat{}和常量。
<sys/times.h>:定義了進程中已耗用時間結構tms以及times()函數原型。
<sys/types.h>:類型標頭檔,定義了基本的系統資料類型。
<sys/utsname.h>:系統名稱結構標頭檔。
<sys/wait.h>:等待調用標頭檔,定義系統調用wait()和waitpid()及相關常數符號。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.