<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設備驅動(dòng)開(kāi)發(fā)之:字符設備驅動(dòng)編程

嵌入式Linux設備驅動(dòng)開(kāi)發(fā)之:字符設備驅動(dòng)編程

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

本文引用地址:http://dyxdggzs.com/article/257111.htm

表11.9給出了kfree()函數的語(yǔ)法格式。

表11.9 kfree()函數語(yǔ)法要點(diǎn)

所需頭文件

#includelinux/malloc.h>

函數原型

voidkfree(void*obj)

函數傳入值

obj:要釋放的內存指針

函數返回值

成功:寫(xiě)入的數據長(cháng)度
失?。?EFAULT

表11.10給出了以頁(yè)為單位的分配函數get_free_page類(lèi)函數的語(yǔ)法格式。

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

所需頭文件

#includelinux/malloc.h>

函數原型

unsignedlongget_zeroed_page(intflags)
unsignedlong__get_free_page(intflags)
unsignedlong__get_free_page(intflags,unsignedlongorder)
unsignedlong__get_dma_page(intflags,unsignedlongorder)

函數傳入值

flags:同kmalloc()

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

函數返回值

成功:返回指向新分配的頁(yè)面的指針
失?。?EFAULT

表11.11給出了基于頁(yè)的內存釋放函數free_page族函數的語(yǔ)法格式。

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

所需頭文件

#includelinux/malloc.h>

函數原型

unsignedlongfree_page(unsignedlongaddr)
unsignedlongfree_pages(unsignedlongaddr,unsignedlongorder)

函數傳入值

addr:要釋放的內存起始地址

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

函數返回值

成功:寫(xiě)入的數據長(cháng)度
失?。?EFAULT

(9)打印信息。

就如同在編寫(xiě)用戶(hù)空間的應用程序,打印信息有時(shí)是很好的調試手段,也是在代碼中很常用的組成部分。但是與用戶(hù)空間不同,在內核空間要用函數printk()而不能用平常的函數printf()。printk()和printf()很類(lèi)似,都可以按照一定的格式打印消息,所不同的是,printk()還可以定義打印消息的優(yōu)先級。

表11.12給出了printk()函數的語(yǔ)法格式。

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

所需頭文件

#includelinux/kernel>

函數原型

intprintk(constchar*fmt,…)

函數傳入值

fmt:
日志級別

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

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

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

KERN_ERR:錯誤報告

KERN_WARNING:對可能出現的問(wèn)題提出警告

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

KERN_INFO:提示性信息

KERN_DEBUG:調試信息

…:與printf()相同

函數返回值

成功:0
失?。?1

這些不同優(yōu)先級的信息輸出到系統日志文件(例如:“/var/log/messages”),有時(shí)也可以輸出到虛擬控制臺上。其中,對輸出給控制臺的信息有一個(gè)特定的優(yōu)先級console_loglevel。只有打印信息的優(yōu)先級小于這個(gè)整數值,信息才能被輸出到虛擬控制臺上,否則,信息僅僅被寫(xiě)入到系統日志文件中。若不加任何優(yōu)先級選項,則消息默認輸出到系統日志文件中。

注意

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

4.proc文件系統

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

表11.13列出了/proc文件系統的主要目錄內容。

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

目錄名稱(chēng)

目錄內容

目錄名稱(chēng)

目錄內容

apm

高級電源管理信息

locks

內核鎖

cmdline

內核命令行

meminfo

內存信息

cpuinfo

CPU相關(guān)信息

misc

雜項

devices

設備信息(塊設備/字符設備)

modules

加載模塊列表

dma

使用的DMA通道信息

mounts

加載的文件系統

filesystems

支持的文件系統信息

partitions

系統識別的分區表

interrupts

中斷的使用信息

rtc

實(shí)時(shí)時(shí)鐘

ioports

I/O端口的使用信息

stat

全面統計狀態(tài)表

kcore

內核映像

swaps

對換空間的利用情況

kmsg

內核消息

version

內核版本

ksyms

內核符號表

uptime

系統正常運行時(shí)間

loadavg

負載均衡

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

linux相關(guān)文章:linux教程




評論


相關(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>