<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > linux 基礎復習(9)設備驅動(dòng)入門(mén)

linux 基礎復習(9)設備驅動(dòng)入門(mén)

作者: 時(shí)間:2016-10-08 來(lái)源:網(wǎng)絡(luò ) 收藏

· get_free_page:獲得一個(gè)或幾個(gè)連續頁(yè)面。

· get_dma_pages:獲得用于DMA傳輸的頁(yè)面。

與之相對應的釋放內存用也有kfree或free_pages 族。

kmalloc 函數語(yǔ)法要點(diǎn)

所需頭文件 #i nclude

函數原型 void *kmalloc(unsigned int len,int flags)

Len:希望申請的字節數

GFP_KERNEL:內核內存的通常分配方法,可能引起睡眠

GFP_BUFFER:用于管理緩沖區高速緩存

函數傳入值 flags GFP_ATOMIC:為中斷處理程序或其他運行于進(jìn)程上下文之外的代碼分

配內存,且不會(huì )引起睡眠

GFP_USER:用戶(hù)分配內存,可能引起睡眠

GFP_HIGHUSER:優(yōu)先高端內存分配

_GFP_DMA:DMA數據傳輸請求內存

_GFP_HIGHMEN:請求高端內存

函數返回值 成功:寫(xiě)入的數據長(cháng)度

失?。?EFAULT

kfree函數的語(yǔ)法格式

所需頭文件 #i nclude

函數原型 void kfree(void * obj)

函數傳入值 obj:要釋放的內存指針

函數返回值 成功:寫(xiě)入的數據長(cháng)度

失?。?EFAULT

get_free_ page類(lèi)函數語(yǔ)法要點(diǎn)

unsigned long get_zeroed_page(int flags)

unsigned long __get_free_page(int flags)

函數原型 unsigned long __get_free_page(int flags,unsigned long order)

unsigned long __get_dma_page(int flags,unsigned long order)

函數傳入值 flags:同kmalloc

order:要請求的頁(yè)面數,以2為底的對數

函數返回值 成功:寫(xiě)入的數據長(cháng)度

失?。?EFAULT

free_page類(lèi)函數語(yǔ)法要點(diǎn)

所需頭文件 #i nclude

函數原型 unsigned long free_page(unsigned long addr)

unsigned long free_page(unsigned long addr)

函數傳入值 flags:同kmalloc

order:要請求的頁(yè)面數,以2為底的對數

函數返回值 成功:寫(xiě)入的數據長(cháng)度

失?。?EFAULT

printk類(lèi)函數語(yǔ)法要點(diǎn)

所需頭文件 #i nclude

函數原型 int printk(const char * fmt,…)

KERN_EMERG:緊急時(shí)間消息

KERN_ALERT:需要立即采取動(dòng)作的情況

KERN_CRIT:臨界狀態(tài),通常涉及嚴重的硬件或軟件操作失敗

KERN_ERR:錯誤報告

函數傳入值 fmt: KERN_WARNING:對可能出現的問(wèn)題提出警告

日志級別 KERN_NOTICE:有必要進(jìn)行提示的正常情況

KERN_INFO:提示性信息

KERN_DEBUG:調試信息

…:如printf一樣的格式說(shuō)明

函數返回值 成功:0

失?。?1

這些不同優(yōu)先級的信息可以輸出到控制臺上、/var/log/messages 里。其中,對輸出給控制臺的信息有一個(gè)特定的優(yōu)先級console_loglevel。若優(yōu)先級小于這個(gè)整數值時(shí),則消息才能顯示到控制臺上,否則,消息會(huì )顯示在/var/log/messages 里。若不加任何優(yōu)先級選項,則消息默認輸出到/var/log/messages 文件中。

要開(kāi)啟klogd和syslogd服務(wù),消息才能正常輸出。

proc 文件系統

/proc 文件系統是一個(gè)偽文件系統,它是一種內核和內核模塊用來(lái)向進(jìn)程發(fā)送信息的機制。這個(gè)偽文件系統讓用戶(hù)可以和內核內部數據結構進(jìn)行交互,獲取有關(guān)進(jìn)程的有用信息,在運行時(shí)通過(guò)改變內核參數改變設置。與其他文件系統不同,/proc存在于內存之中而不是硬盤(pán)上。讀者可以通過(guò)“ls”查看/proc文件系統的內容。

/proc文件系統主要目錄內容

screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new windownCTRL+Mouse wheel to zoom in/out';} onclick=if(!this.resized) {return true;} else {window.open(this.src);} alt= src=http://blogimg.chinaunix.net/blog/upfile2/080413215654.jpg onload=if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new windownCTRL+Mouse wheel to zoom in/out';} border=0>

除此之外,還有一些是以數字命名的目錄,它們是進(jìn)程目錄。系統中當前運行的每一個(gè)進(jìn)程都有對應的一個(gè)目錄在/proc下,以進(jìn)程的PID 號為目錄名,它們是讀取進(jìn)程信息的接口。進(jìn)程目錄的結構如下

screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new windownCTRL+Mouse wheel to zoom in/out';} onclick=if(!this.resized) {return true;} else {window.open(this.src);} alt= src=http://blogimg.chinaunix.net/blog/upfile2/080413215720.jpg onload=if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new windownCTRL+Mouse wheel to zoom in/out';} border=0>

用戶(hù)可以使用cat命令來(lái)查看其中的內容。

可以看到,/proc文件系統體現了內核及進(jìn)程運行的內容,在加載模塊成功后,讀者可以使用查看/proc/device文件獲得相關(guān)設備的主設備號。


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞:

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>