Как использовать kzalloc и GFP_DMA для выделения буферов для mmap в модулях ядра Linux?Linux

Ответить Пред. темаСлед. тема
Anonymous
 Как использовать kzalloc и GFP_DMA для выделения буферов для mmap в модулях ядра Linux?

Сообщение Anonymous »

Мы все знаем, что функция, используемая для динамического использования памяти в пользовательском пространстве, — это malloc(), которая последовательно используется в различных операционных системах, а соответствующая функция освобождения памяти в пользовательском пространстве — free(). Внимание: динамически запрашиваемую память необходимо освободить после использования, иначе это приведет к утечкам памяти. Если утечка памяти произойдет в пространстве ядра, это приведет к сбою системы.
Итак, как подать заявку на выделение памяти в пространстве ядра? Обычно мы используем такие функции, как kmalloc(), kzalloc(), vmalloc() и т. д. Ниже мы познакомим вас с использованием этих функций и их различиями.
kmalloc()
Прототип функции:
void *kmalloc(size_t size, gfp_t flags);
Память, запрошенная kmalloc(), расположена в области отображения физической памяти и физически непрерывна. . У них есть только фиксированное смещение от реального физического адреса. Из-за существования простого отношения преобразования существует ограничение на размер запрашиваемой памяти, который не может превышать 128 КБ.
Часто используемые флаги (методы выделения памяти):
GFP_ATOMIC — процесс выделения памяти — это атомарный процесс, который не прерывается высокоприоритетными процессами или прерываниями;
GFP_KERNEL — обычное распределение памяти;
В общем, только память должен быть физически непрерывным, когда к нему необходим доступ по DMA, но по соображениям производительности ядро ​​обычно использует kmalloc(), а vmalloc() используется только тогда, когда необходимо получить большой блок памяти. Например, когда модуль динамически загружается в ядро, он загружается в память, выделенную функцией vmalloc().
Общие характеристики kmalloc(), kzalloc() и vmalloc () являются:

Подробнее здесь: https://stackoverflow.com/questions/790 ... ernel-modu
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Linux»