Необходима информация в списъка за събиране

Работя върху разработването на блоков драйвер в linux. Изискването е да се разпредели огромна част от паметта (примерно повече от 128KB, 2MB или 8MB или така...), да се раздели паметта на малка част и да се изпрати през списъка за разпръснато събиране. Записите за събиране на разпръснати данни ще се контролират от потребителското приложение.

Знам, че има строго ограничение на наличната памет в ядрото. Как мога да постигна това в ядрото. Всяка помощ е високо оценена.


person user73636    schedule 20.01.2015    source източник
comment
парче не боклук, хахаха. Чънк означава парче, боклук означава боклук.   -  person Shahbaz    schedule 21.01.2015


Отговори (1)


Можете да използвате vmalloc за разпределяне от виртуална памет. По този начин можете да имате цялата памет, която желаете (ограничена от количеството памет, което има).

От mm/vmalloc.c:

/**
* vmalloc - allocate virtually contiguous memory
* @size: allocation size
* Allocate enough pages to cover @size from the page level
* allocator and map them into contiguous kernel virtual space.
*
* For tight control over page level allocator and protection flags
* use __vmalloc() instead.
*/

vmalloced паметта може да бъде освободена с, познахте, vfree.

person Shahbaz    schedule 21.01.2015