標頭檔案相關函式

2021-06-29 08:39:45 字數 4184 閱讀 2073

2.6.30.4的標頭檔案的位置和2.6.25.8的不一樣,除去核心原始碼下的include目錄外,在arch/arm/mach-s3c2410/和arch/arm/plat-s3c24xx/目錄下都有include目錄的。

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

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

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

#include /* printk() */

//#include /* kmalloc() */
//#include /* file_operations、inode_operations、super_operations結構體*/
//#include /* error codes */perror()

#include /* size_t等各種系統typedef的資料型別 */dev_t, off_t, pid_t

//#include /* o_accmode */
//#include /* copy_to_user */
#include /*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 ( 乙個**修訂版本號; 看 的注釋以便知道建立版本字串使用的慣例),

module_alias ( 模組為人所知的另乙個名子 ),

module_device_table ( 來告知使用者空間, 模組支援那些裝置 ).

*/

#include /* #define module_init(x)    __initcall(x);  driver initialization entry point

#define module_exit(x)    __exitcall(x);  driver exit entry point

*/

#include /* extern int misc_register(struct miscdevice * misc);  註冊miscdevice結構體成員變數裝置

extern int misc_deregister(struct miscdevice *misc);  登出miscdevice結構體成員變數裝置

*/

#include /* 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    /* 和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 int del_timer_sync(struct timer_list *timer)

#define init_timer(timer)

void add_timer(struct timer_list *timer)
#include /* 和gpio口相關的一些巨集定義(在arch/arm/mach-s3c2410/mach) */
#include //核心等待佇列中要使用的task_normal、task_interruptible包含在這個標頭檔案
#include //包含了ioremap、iowrite等核心訪問io記憶體等函式的定義。
#include /*  */
#include /* 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 /* wake_up_interruptible   喚醒 q 指定的註冊在等待佇列上的程序。該函式不能直接的立即喚醒程序,而是由排程程式轉換上下文,調整為可執行狀態。  

static declare_wait_queue_head(button_waitq);宣告等待隊列為全域性變數

wait_event_interruptible該函式修改task的狀態為task_interruptible,意味著改程序將不會繼續執行直到被喚醒,然後被新增到等待佇列wq中*/

#include /* poll_wait */
#include /* copy_to_user和copy_from_user */

#include /* __raw_readl __raw_writel*/

#include /* struct clk *clk_get(struct device *dev, const char *id);

unsigned long clk_get_rate(struct clk *clk); */

#include /* struct clk;結構體的定義 (在arch/arm/plat-s3c/plat/include/clock.arch中,對應的原始檔在/arm/plat-s3c/clock.c)*/
#include //包含了device、class 、device_driver等結構的定義
#include /* 和bank相關的暫存器的巨集定義 */
#include /* linux核心中64位除法函式do_div */
#include /* struct fb_info 結構體的定義 */
#include /* struct s3c2410fb_display(在arch/arm/mach-s3c2410/include/mach/fb.h) */

函式,遞迴,標頭檔案

include include void main printf n結果是 f sum getchar include include void main else printf n結果是 d sum getchar 錯誤示例 void main void add int a,int b 上述 問題...

C語言中 time相關的函式 標頭檔案

1.time相關的函式在 time.h 中可以檢視原型。如下命令可以找出time.h的路徑 whereis time.h 2.先看 要包含time.h void main 說明 1 time t實際上是長整數型別,定義為 typedef long time t time t 定義的數值也可以 使用 ...

linux c庫檔案和標頭檔案相關問題

問題一 undefined reference to 問題二 usr bin ld cannot find l 問題三 h no such file or directory.首先,這幾個問題都不是編譯錯誤,是鏈結錯誤,也就是如果出現的是這幾個錯誤,說明你的源程式本身沒有問題,是你的編譯選項用的不對...