Книга: Разработка ядра Linux
Получение страниц заполненных нулями
Получение страниц заполненных нулями
Для того чтобы получаемые страницы памяти были заполнены нулями, необходимо использовать следующую функцию.
unsigned long get_zeroed_page(unsigned int gfp_mask);
Эта функция аналогична функции __get_free_page()
, за исключением того, что после выделения страницы памяти она заполняется нулями. Это полезно для страниц памяти, которые возвращаются в пространство пользователя, так как случайный "мусор", который находится в страницах памяти, может оказаться не совсем случайным и случайно может содержать некоторые (например, секретные) данные. Все данные необходимо обнулить или очистить каким-либо другим образом перед тем, как возвращать информацию в пространство пользователя, чтобы при этом не пострадала безопасность системы. В табл. 11.2 приведен список всех низкоуровневых средств выделения памяти.
Таблица 11.2. Низкоуровневые средства выделения памяти
Функция | Описание |
---|---|
alloc_page(gfp_mask) |
Выделяет одну страницу памяти и возвращает указатель на соответствующую ей структуру page |
alloc_pages(gfp_mask, order) |
Выделяет 2order страниц памяти и возвращает указатель на структуру page первой страницы |
__get_free_page(gfp_mask) |
Выделяет одну страницу памяти и возвращает указатель на ее логический адрес |
__get_free_pages(gfp_mask, order) |
Выделяет 2order страниц памяти и возвращает указатель на логический адрес первой страницы |
get_zeroed_page(gfp_mask) |
Выделяет одну страницу памяти, обнуляет ее содержимое и возвращает указатель на ее логический адрес |
- 6.1.5. Получение сведений о часовом поясе
- Получение страниц памяти
- 10.5. Получение отчетов об имуществе
- 23.7. Получение адресов
- 18.1.2. Получение ответа
- Получение заголовков запроса
- Получение статистики
- Информация заголовочной страницы (Database header)
- Информация страниц данных
- Статистика страниц индексов
- Размер страницы базы данных
- Типы страниц и их использование