Главная » 2017 » Ноябрь » 21 » man 2 pkey_alloc
01:17
man 2 pkey_alloc

SEO sprint - Всё для максимальной раскрутки!





ИМЯ


pkey_alloc, pkey_free - выделяет или освобождает ключ защиты



ОБЗОР


#include <sys/mman.h>

int pkey_alloc(unsigned long flags, unsigned long access_rights);
int pkey_free(int pkey);



ОПИСАНИЕ


Вызов pkey_alloc() выделяет ключ защиты (pkey), который можно передавать в
pkey_mprotect(2).

Аргумент pkey_alloc() flags может содержать ноль или более запретительных
операций:

PKEY_DISABLE_ACCESS
Запретить доступ ко всем данным памяти, на которую наложен возвращаемый
ключ.

PKEY_DISABLE_WRITE
Запретить доступ на запись в память, на которую наложен возвращаемый ключ.

Вызов pkey_free() освобождает ключ защиты и делает его доступным для будущего
выделения. После освобождения ключа защиты он может больше не использоваться в
операциях по защите ключом.

Приложение не должно вызывать pkey_free() с ключом защиты, который был назначен
адресному диапазону с помощью pkey_mprotect(2) и который пока используется. Это
вызывает непредсказуемое поведение и может привести к ошибке.



ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ


При успешном выполнении pkey_alloc() возвращает положительное значение ключа
защиты. Вызов pkey_free() возвращает ноль. При ошибке возвращается -1 и errno
присваивается соответствующее значение.



ОШИБКИ


EINVAL Неверное значение pkey, flags или access_rights.

ENOSPC (pkey_alloc()) Все ключи защиты, доступные текущему процессу уже
распределены. Количество доступных ключей зависит от архитектуры и
реализации и может быть меньшим из-за использования отдельных ключей самим
ядром. В настоящее время на x86 для пользовательской программы доступно 15
ключей.

Также эта ошибка возвращается, если процессор или операционная система не
поддерживают ключи защиты. Приложения всегда должны быть готовы к получению
этой ошибки, так как приложение не может контролировать сокращение
количества доступных pkey.



ВЕРСИИ


Системные вызовы pkey_alloc() и pkey_free() добавлены в ядро Linux версии 4.9. В
glibc поддержка отсутствует.



СООТВЕТСТВИЕ СТАНДАРТАМ


Системные вызовы pkey_alloc() и pkey_free() есть только в Linux.

pkey_free()), ядро может вносить произвольные изменения в части регистров прав,
относящихся к этому ключу.



ПРИМЕР


Смотрите pkeys(7).



СМОТРИТЕ ТАКЖЕ


pkey_mprotect(2), pkeys(7)



Категория: (2) Системные вызовы ядра (функции языка Си) | Просмотров: 458 | Добавил: Администратор | Рейтинг: 0.0/0
Всего комментариев: 0
avatar