5 linux裝置驅動 記憶體申請

2021-05-27 15:39:37 字數 887 閱讀 6450

動態記憶體分配:

(1)kmalloc(size_t size , int flag)和kfree(const void *addr)

分配核心內部的動態記憶體,記憶體分配速度快,但是大小限制在

32*page_size(即32*4k)以內

(2)vmalloc(unsigned long size)和vfree(const void *addr)

分配核心內部連續的記憶體空間,此函式分配的是實體地址,並且沒有限

制可分配的記憶體大小,若沒有可分配的記憶體,程序就會進入休眠狀態,

因此,此函式不能用在中斷服務函式或中斷禁止狀態

(3)__get_free_pages(unsigned int gfp_mask,unsigned int order)

free_pages(unsigned long addr,unsigned int order)

gfp_mask:使用kmalloc中使用的引數

order:指定次數= 2 * page_size <= 32*page_size

此函式是以記憶體頁為單位的分配函式

記憶體池:主要用在塊裝置驅動程式上

(1)mempool_create()函式和mempool_destroy()函式

mempool_create():生成記憶體池管理結構體的記憶體

mempool_destroy():取消記憶體池管理物件

(2)mempool_alloc()和mempool_free()

mempool_alloc():從記憶體池的管理結構體pool中,分配記憶體物件

mempool_free():向記憶體池釋放已分配的記憶體物件

5 Linux 裝置檔名

ide 硬碟 dev hd a d scs sata usb 硬碟 dev sd a p u盤 dev sd a p 與sata相同 軟碟機 dev df 0 1 印表機 25針 dev lp 0 2 usb dev usb lp 0 15 滑鼠 usb dev usb mouse 0 15 ps2...

5 Linux時間程式設計

include time t time time t calptr 返回距計算機元年的秒數 define time t long include struct tm gmtime const time t calptr 獲取世界標準時間utc struct tm include struct tm ...

Linux驅動開發之靜態申請裝置號

一 1 標頭檔案 include linux fs.h 2 api 靜態申請裝置號 int register chrdev region dev t,unsigned,const char 動態分配裝置號 int alloc chrdev region dev t unsigned,unsigned...