linux下部分標頭檔的作用

來源:互聯網
上載者:User

除去核心源碼下的include目錄外,在arch/arm/mach-s3c2410/和arch/arm/plat-s3c24xx/目錄下都有include目錄的。

#include <linux/kernel.h>        /* printk() */
#include <linux/slab.h>        /* kmalloc() */
#include <linux/fs.h>        /* file_operations、inode_operations、super_operations結構體*/
#include <linux/errno.h>        /* error codes */
#include <linux/types.h>        /* size_t等各種系統typedef的資料類型 */
#include <linux/fcntl.h>        /* O_ACCMODE */
#include <linux/poll.h>        /* COPY_TO_USER */
#include <linux/module.h>          /*MODULE_LICENSE("GPL");核心認識的特定許可有,                           "GPL"( 適用 GNU 通用公用許可的任何版本 ),                           "GPL v2"( 只適用 GPL 版本 2 ),                           "GPL and additional rights",                           "Dual BSD/GPL",                           "Dual MPL/GPL",                           "Proprietary".                          除非你的模組明確標識是在核心認識的一個自由許可下,                           否則就假定它是私人的,                          核心在模組載入時被"弄汙濁"了.                           象我們在第 1 章"授權條款"中提到的,                           核心開發人員不會熱心協助在載入了私人模組後遇到問題的使用者.                           MODULE_AUTHOR ( 聲明誰編寫了模組 ),                            MODULE_DESCRIPION( 一個人可讀的關於模組做什麼的聲明 ),                            MODULE_VERSION ( 一個代碼修訂版本號碼; 看 <linux/module.h> 的注釋以便知道建立版本字串使用的慣例),                            MODULE_ALIAS ( 模組為人所知的另一個名子 ),                            MODULE_DEVICE_TABLE ( 來告知使用者空間, 模組支援那些裝置 ).                           */
#include <linux/init.h>        /* #define module_init(x)    __initcall(x);  driver initialization entry point                       #define module_exit(x)    __exitcall(x);  driver exit entry point                       */
#include <linux/miscdevice.h>        /* extern int misc_register(struct miscdevice * misc);  註冊miscdevice結構體成員變數裝置                         extern int misc_deregister(struct miscdevice *misc);  登出miscdevice結構體成員變數裝置                         */
#include <linux/cdev.h>        /* void cdev_init(struct cdev *, const struct file_operations *);                      struct cdev *cdev_alloc(void);                      void cdev_put(struct cdev *p);                      int cdev_add(struct cdev *, dev_t, unsigned);                      void cdev_del(struct cdev *);                      void cd_forget(struct inode *); */
#include <mach/hardware.h>                 /* 和GPIO口操作相關的函數定義的標頭檔                                對應的源檔案在/linux-2.6.32.2/arch/arm/plat-s3c24xx/gpio.c                                void s3c2410_gpio_cfgpin(unsigned int pin, unsigned int function);                                unsigned int s3c2410_gpio_getcfg(unsigned int pin);                                void s3c2410_gpio_pullup(unsigned int pin, unsigned int to);                                int s3c2410_gpio_getpull(unsigned int pin);                                void s3c2410_gpio_setpin(unsigned int pin, unsigned int to);                                unsigned int s3c2410_gpio_getpin(unsigned int pin);                                unsigned int s3c2410_modify_misccr(unsigned int clear, unsigned int change);                                int s3c2410_gpio_getirq(unsigned int pin);                                int s3c2410_gpio_irq2pin(unsigned int irq);*/#include <mach/regs-gpio.h>        /* 和GPIO口相關的一些宏定義(在arch/arm/mach-s3c2410/mach) */
#include <linux/platform_device.h>        /*  */
#include <linux/interrupt.h>        /* typedef irqreturn_t (*irq_handler_t)(int, void *);                         extern void free_irq(unsigned int, void *);extern void disable_irq(unsigned int irq);                         extern void enable_irq(unsigned int irq);等和中斷相關函數的聲明 */
#include <linux/wait.h>        /* wake_up_interruptible   喚醒 q 指定的註冊在等待隊列上的進程。該函數不能直接的立即喚醒進程,而是由發送器轉換上下文,調整為可運行狀態。                      static DECLARE_WAIT_QUEUE_HEAD(button_waitq);聲明等待隊列為全域變數                      wait_event_interruptible該函數修改task的狀態為TASK_INTERRUPTIBLE,意味著改進程將不會繼續運行直到被喚醒,然後被添加到等待隊列wq中*/
#include <linux/poll.h>        /* poll_wait */
#include <asm/uaccess.h>        /* copy_to_user和copy_from_user */#include <asm/io.h>              /* __raw_readl  __raw_writel*/
#include <linux/clk.h>        /* struct clk *clk_get(struct device *dev, const char *id);                      unsigned long clk_get_rate(struct clk *clk); */
#include <plat/clock.h>        /* struct clk;結構體的定義 (在arch/arm/plat-s3c/plat/include/clock.arch中,對應的源檔案在/arm/plat-s3c/clock.c)*/
#include <linux/device.h>           //包含了device、class 、device_driver等結構的定義
#include <mach/regs-mem.h>        /* 和bank相關的寄存器的宏定義 */
#include <asm/div64.h>          /* Linux核心中64位除法函數do_div */
#include <linux/fb.h>        /* struct fb_info 結構體的定義 */
#include <mach/fb.h>        /* struct s3c2410fb_display(在arch/arm/mach-s3c2410/include/mach/fb.h) */

#include <linux/module.h>       模組標頭檔#include <linux/kernel.h>        驅動要寫入核心,與核心相關的標頭檔#include <linux/fs.h>                檔案系統標頭檔#include <linux/init.h>               初始化標頭檔#include <linux/delay.h>            延時標頭檔#include <asm/irq.h>                   與處理器相關的中斷#include <linux/interrupt.h>           作業系統中斷#include <asm/uaccess.h>               與處理器相關的入口//#include <asm/arch/regs-gpio.h>          與處理器相關的IO口操作#include <mach/regs-gpio.h>                   同上//#include <asm/hardware.h>                 與處理器相關的硬體#include <mach/hardware.h>                   同上#include <linux/device.h>                        裝置驅動檔案#include <linux/poll.h>                                輪詢檔案#include <linux/gpio.h>                             作業系統相關的IO口檔案#include <stdio.h>                                            標準輸入輸出#include <stdlib.h>                                            標準庫#include <unistd.h>                                               #include <sys/ioctl.h>                                         IO控制
#include <sys/types.h>        變數類型的標頭檔,因為linux要相容各種長度的變數             #include <sys/stat.h>            檔案操作的標頭檔                          #include <fcntl.h>               同上#include <sys/select.h>      同上                             #include <sys/time.h>         時間編程的標頭檔#include <errno.h>             錯誤碼標頭檔

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.