新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 嵌入式Linux設(shè)備驅(qū)動開發(fā)之:字符設(shè)備驅(qū)動編程

嵌入式Linux設(shè)備驅(qū)動開發(fā)之:字符設(shè)備驅(qū)動編程

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

本文引用地址:http://www.butianyuan.cn/article/257111.htm

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

表11.9 kfree()函數(shù)語法要點

所需頭文件

#includelinux/malloc.h>

函數(shù)原型

voidkfree(void*obj)

函數(shù)傳入值

obj:要釋放的內(nèi)存指針

函數(shù)返回值

成功:寫入的數(shù)據(jù)長度
失?。?EFAULT

表11.10給出了以頁為單位的分配函數(shù)get_free_page類函數(shù)的語法格式。

表11.10 get_free_page類函數(shù)語法要點

所需頭文件

#includelinux/malloc.h>

函數(shù)原型

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

函數(shù)傳入值

flags:同kmalloc()

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

函數(shù)返回值

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

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

表11.11 free_page類函數(shù)語法要點

所需頭文件

#includelinux/malloc.h>

函數(shù)原型

unsignedlongfree_page(unsignedlongaddr)
unsignedlongfree_pages(unsignedlongaddr,unsignedlongorder)

函數(shù)傳入值

addr:要釋放的內(nèi)存起始地址

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

函數(shù)返回值

成功:寫入的數(shù)據(jù)長度
失?。?EFAULT

(9)打印信息。

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

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

表11.12 printk類函數(shù)語法要點

所需頭文件

#includelinux/kernel>

函數(shù)原型

intprintk(constchar*fmt,…)

函數(shù)傳入值

fmt:
日志級別

KERN_EMERG:緊急時間消息

KERN_ALERT:需要立即采取動作的情況

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

KERN_ERR:錯誤報告

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

KERN_NOTICE:有必要進行提示的正常情況

KERN_INFO:提示性信息

KERN_DEBUG:調(diào)試信息

…:與printf()相同

函數(shù)返回值

成功:0
失敗:-1

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

注意

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

4.proc文件系統(tǒng)

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

表11.13列出了/proc文件系統(tǒng)的主要目錄內(nèi)容。

表11.13 /proc文件系統(tǒng)主要目錄內(nèi)容

目錄名稱

目錄內(nèi)容

目錄名稱

目錄內(nèi)容

apm

高級電源管理信息

locks

內(nèi)核鎖

cmdline

內(nèi)核命令行

meminfo

內(nèi)存信息

cpuinfo

CPU相關(guān)信息

misc

雜項

devices

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

modules

加載模塊列表

dma

使用的DMA通道信息

mounts

加載的文件系統(tǒng)

filesystems

支持的文件系統(tǒng)信息

partitions

系統(tǒng)識別的分區(qū)表

interrupts

中斷的使用信息

rtc

實時時鐘

ioports

I/O端口的使用信息

stat

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

kcore

內(nèi)核映像

swaps

對換空間的利用情況

kmsg

內(nèi)核消息

version

內(nèi)核版本

ksyms

內(nèi)核符號表

uptime

系統(tǒng)正常運行時間

loadavg

負載均衡

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

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




評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉