2016-05-31 93 views
1

我正在使用Linux內核,並希望在引導時(在內核空間中)靜態分配一個子頁面大小的數組,這些內容稍後將被內核用於調度目的。任何人都可以請最好的方式指出我做到這一點?在內核啓動時分配(靜態地)內存

在正常執行操作系統期間,除了隱式地在最後(關閉)外,永遠不會顯式釋放此內存。

我已經知道alloc_bootmem(),但我想知道/探索其他可能性。如果有人能夠指出我的代碼片段,它以與Linux內核中已存在的類似方式使用內存的代碼片段,那將非常棒。

+1

Kmalloc() – Mazhar

+0

這看起來也是一個不錯的選擇。在內核源代碼中,通常會在啓動時放置一個kmalloc()調用來進行分配? – Mutinifni

+0

你究竟在說什麼引導時間或運行時間? – Mazhar

回答

0

一些內核模塊都使用這種技術來分配DMA緩衝區需要大的尺寸,各爲例jazzdma模塊和nlm-dma模塊

請注意,如果您使用的是啓動時的內存分配器爲DMA目的,你必須使用

void *alloc_bootmem_low_pages(unsigned long size); 

,而不是

void *alloc_bootmem_pages(unsigned long size);

,因爲DMA只能訪問低內存類型