Информация, необходимая для списка рассеяния-собирания

Я работаю над разработкой блочного драйвера в Linux. Требование состоит в том, чтобы выделить огромный кусок памяти (например, более 128 КБ, 2 МБ или 8 МБ или около того ...), разделить память на небольшой кусок и отправить его через список разброса-сбора. Записи о сборе и разбросе будут контролироваться пользовательским приложением.

Я знаю, что в ядре есть строгое ограничение памяти. Как я могу добиться этого в ядре. Любая помощь высоко ценится.


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