Linux 下個頭文件做用

linux 下各個頭文件的做用
 

2.6.30.4的頭文件的位置和2.6.25.8的不同,除去內核源碼下的include目錄外, node

在arch/arm/mach-s3c2410/和arch/arm/plat-s3c24xx/目錄下都有include目錄的。 linux

 

#include <linux/kernel.h>     // printk() 函數

#include <linux/slab.h>      // kmalloc()  spa

#include <linux/fs.h>        // file_operation,inode_operations,super_operations code

#include <linux/errno.h>      // error codes */ orm

#include <linux/types.h>      // size_t等各類系統typedef的數據類型 */ 隊列

#include <linux/fcntl.h>      // O_ACCMODE */ 進程

#include <linux/poll.h>      // COPY_TO_USER */
 

#include <linux/init.h>      // #define module_init(x)    __initcall(x);  
                  // #define module_exit(x)    __exitcall(x); 
get


#include <linux/miscdevice.h>     // extern int misc_register();   源碼

                                  // 註冊miscdevice結構體成員變量設備

                                  // extern int misc_deregister();  

                                  // 註銷miscdevice結構體成員變量設備 

  

#include <linux/cdev.h>      // void cdev_init()
                  // 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口操做相關的函數定義的頭文件對應的源文件在

                                   //  /arch/arm/plat-s3c24xx/gpio.c  

                                   //  void s3c2410_gpio_cfgpin(pin,function);
                  // unsigned int s3c2410_gpio_getcfg(pin);
                  // void s3c2410_gpio_pullup(pin,to);
                  // int s3c2410_gpio_getpull(pin);
                  // void s3c2410_gpio_setpin(lin,to);
                  // unsigned int s3c2410_gpio_getpin(pin);
                  // unsigned int s3c2410_modify_misccr(clear,chang)

                  // int s3c2410_gpio_getirq(pin);
                                   //  int s3c2410_gpio_irq2pin(pin);

                    

#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 指定的註冊在等待隊列

                                   //上的進/程。該函數不能直接的當即喚醒進程,而是由調

                                   // 度程序轉換上下文,調整爲可運行狀態。

                                   // 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>      //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(來告知用戶空間, 模塊支持那些設備 )
相關文章
相關標籤/搜索