<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

          本文引用地址:http://www.ex-cimer.com/article/257111.htm

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

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

          所需頭文件

          #includelinux/malloc.h>

          函數(shù)原型

          voidkfree(void*obj)

          函數(shù)傳入值

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

          函數(shù)返回值

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

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

          表11.10 get_free_page類函數(shù)語(yǔ)法要點(diǎn)

          所需頭文件

          #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:要請(qǐng)求的頁(yè)面數(shù),以2為底的對(duì)數(shù)

          函數(shù)返回值

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

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

          表11.11 free_page類函數(shù)語(yǔ)法要點(diǎn)

          所需頭文件

          #includelinux/malloc.h>

          函數(shù)原型

          unsignedlongfree_page(unsignedlongaddr)
          unsignedlongfree_pages(unsignedlongaddr,unsignedlongorder)

          函數(shù)傳入值

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

          order:要請(qǐng)求的頁(yè)面數(shù),以2為底的對(duì)數(shù)

          函數(shù)返回值

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

          (9)打印信息。

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

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

          表11.12 printk類函數(shù)語(yǔ)法要點(diǎn)

          所需頭文件

          #includelinux/kernel>

          函數(shù)原型

          intprintk(constchar*fmt,…)

          函數(shù)傳入值

          fmt:
          日志級(jí)別

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

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

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

          KERN_ERR:錯(cuò)誤報(bào)告

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

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

          KERN_INFO:提示性信息

          KERN_DEBUG:調(diào)試信息

          …:與printf()相同

          函數(shù)返回值

          成功:0
          失?。?1

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

          注意

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

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

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

          高級(jí)電源管理信息

          locks

          內(nèi)核鎖

          cmdline

          內(nèi)核命令行

          meminfo

          內(nèi)存信息

          cpuinfo

          CPU相關(guān)信息

          misc

          雜項(xiàng)

          devices

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

          modules

          加載模塊列表

          dma

          使用的DMA通道信息

          mounts

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

          filesystems

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

          partitions

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

          interrupts

          中斷的使用信息

          rtc

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

          ioports

          I/O端口的使用信息

          stat

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

          kcore

          內(nèi)核映像

          swaps

          對(duì)換空間的利用情況

          kmsg

          內(nèi)核消息

          version

          內(nèi)核版本

          ksyms

          內(nèi)核符號(hào)表

          uptime

          系統(tǒng)正常運(yùn)行時(shí)間

          loadavg

          負(fù)載均衡

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

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




          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();