2016-05-31 12 views
1

Ich arbeite mit dem Linux-Kernel und würde beim Booten (im Kernel-Bereich) ein Array von Unterseiten statisch reservieren, das später vom Kernel für Planungszwecke verwendet wird . Könnte mir bitte jemand auf die beste Weise zeigen, dies zu tun?Zuweisung von (statischem) Speicher bei Kernel-Boot-Zeit

Dieser Speicher wird niemals während der normalen Ausführung des Betriebssystems explizit freigegeben, außer implizit am Ende (Shutdown).

Ich bin mir bereits bewusst, alloc_bootmem(), aber ich würde gerne wissen/erkunden Sie auch andere Möglichkeiten. Es wäre wirklich toll, wenn mich jemand auf einen Codeschnipsel verweisen könnte, der ähnlich wie im Linux-Kernel Speicher verwendet.

+1

Was ist mit Kmalloc() – Mazhar

+0

Das sieht nach einer guten Option auch aus. Wo in der Kernel-Quelle würde man normalerweise einen kmalloc() -Aufruf zur Boot-Zeit zuordnen? – Mutinifni

+0

Worüber sprechen Sie speziell über Boot-Zeit oder Laufzeit? – Mazhar

Antwort

0

einige Kernel-Module werden mit dieser Technik DMA Buffer zuweisen, wenn eine große Größe benötigt wird, für exemple jazzdma Modul und nlm-dma Modul

Beachten Sie, dass, wenn Sie Bootzeit Speicherzuordner für dma Zweck verwenden Sie

verwenden müssen
void *alloc_bootmem_low_pages(unsigned long size); 

statt

void *alloc_bootmem_pages(unsigned long size);

, weil DMA nur auf wenig Speicher zugreifen kann