linux 下各個頭文件的作用


2.6.30.4的頭文件的位置和2.6.25.8的不一樣,除去內核源碼下的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/.h>        /*  */
#include <linux/.h>        /*  */
#include <linux/.h>        /*  */
#include <linux/.h>        /*  */
#include <linux/.h>        /*  */
#include <linux/.h>        /*  */
#include <linux/.h>        /*  */
#include <linux/.h>        /*  */
#include <linux/.h>        /*  */



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM