Provided by: manpages-ru-dev_4.23.1-1_all bug

ИМЯ

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

LIBRARY

       Standard C library (libc, -lc)

СИНТАКСИС

       #define _GNU_SOURCE             /* смотрите feature_test_macros(7) */
       #include <sys/mman.h>

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

ОПИСАНИЕ

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

       Аргумент  flags вызова pkey_alloc() зарезервирован для использования в будущем и в настоящее время должен
       равняться 0.

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

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

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

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

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

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

       On  success,  pkey_alloc()   returns  a  positive protection key value.  On success, pkey_free()  returns
       zero.  On error, -1 is returned, and errno is set to indicate the error.

ОШИБКИ

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

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

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

СТАНДАРТЫ

       Linux.

ИСТОРИЯ

       Linux 4.9, glibc 2.27.

ПРИМЕЧАНИЯ

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

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

ПРИМЕРЫ

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

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

       pkey_mprotect(2), pkeys(7)

ПЕРЕВОД

       Русский перевод этой страницы руководства разработал Alexey, Azamat Hackimov <azamat.hackimov@gmail.com>,
       kogamatranslator49    <r.podarov@yandex.ru>,    Darima    Kogan    <silverdk99@gmail.com>,     Max     Is
       <ismax799@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

       Этот  перевод является свободной программной документацией; он распространяется на условиях общедоступной
       лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html  версии  3  или
       более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

       Если  вы  обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом
       разработчику по его адресу электронной почты или по адресу списка рассылки русских переводчиков.

Linux man-pages 6.8                               2 мая 2024 г.                                    pkey_alloc(2)