Динамическое размещение в пространстве ядра

Я пытался выделить пространство, используя malloc в пространстве ядра для драйвера, над которым я работаю (использование malloc является ограничением; мне не разрешено выделять пространство каким-либо другим способом), но если я попытаюсь выделить "слишком много" элементов (~ 500 раз очень маленькая структура), фактически выделяется только часть требуемого мне пространства.

У меня без проблем сработало уменьшение количества выделенных элементов. Есть ли у динамического распределения в пространстве ядра ограничения, которые могут вызывать наблюдаемое мной поведение?


person pap42    schedule 18.10.2012    source источник


Ответы (1)


malloc - это функция библиотеки пользовательского пространства. Вы не можете использовать его в пространстве ядра. Существует функция под названием kmalloc (), который используется для выделения памяти в пространстве ядра.

Вы также можете использовать vmalloc (). Предлагаю вам прочитать эту ветку В чем разница между vmalloc и kmalloc? для некоторых разъяснений по vmalloc () и kmalloc ().

А также я предлагаю вам поискать свои запросы в SO, а затем задавать вопросы. Потому что кто-то уже спросил здесь

person Jeyaram    schedule 18.10.2012