Библиотека сайта rus-linux.net
Цилюрик О.И. Модули ядра Linux | ||
Назад | Внутренние механизмы ядра | Вперед |
Выделение больших буферов
Для выделения экстремально больших буферов, иногда описывают и рекомендуют технику выделения памяти непосредственно при загрузке системы (ядра). Но эта техника доступна только модулям, загружаемым с ядром (при начальной загрузке), далее они не подлежат выгрузке. Техника, приемлемая для команды разработчиков ядра, но сомнительная в своей ценности для сторонних разработчиков модулей ядра. Тем не менее, вскользь упомним и её. Для её реализации есть такие вызовы:
#include <linux/bootmem.h> void *alloc_bootmem( unsigned long size ); void *alloc_bootmem_low( unsigned long size ); void *alloc_bootmem_pages( unsigned long size); void *alloc_bootmem_low_pages( unsigned long size );
Эти функции выделяют либо целое число страниц (если имя функции заканчивается на _pages), или не выровненные странично области памяти.
Освобождение памяти, выделенной при загрузке, производится даже в ядре крайне редко: сам модуль выгружен быть не может, а почти наверняка получить освобождённую память позже, при необходимости, он будете уже не в состоянии. Однако, существует интерфейс для освобождения и этой памяти:
void free_bootmem( unsigned long addr, unsigned long size );
Предыдущий раздел: | Оглавление | Следующий раздел: |
Страничное выделение | Динамические структуры и управление памятью |