Provided by: manpages-ru-dev_4.21.0-2_all bug

ИМЯ

       s390_guarded_storage - операции со средством защищённого хранения z/Architecture

LIBRARY

       Standard C library (libc, -lc)

СИНТАКСИС

       #include <asm/guarded_storage.h> /* определения констант GS_* */
       #include <sys/syscall.h>         /* определения констант SYS_* */
       #include <unistd.h>

       int syscall(SYS_s390_guarded_storage, int command,
                   struct gs_cb *gs_cb);

       Note:  glibc  provides  no  wrapper  for  s390_guarded_storage(), necessitating the use of
       syscall(2).

ОПИСАНИЕ

       Системный вызов s390_guarded_storage() задействует средство защищённого хранения  (Guarded
       Storage Facility, свойство z/Architecture) для процессов пользовательского пространства.

       Средство  защищённого  хранения  —  это  аппаратное  свойство,  позволяющее пометить до 64
       областей памяти (в z14)  для  защиты;  при  чтении  указателя  новыми  инструкциями  «Load
       Guarded»  (LGG)  или  «Load Logical and Shift Guarded» (LLGFSG) будет проверяться диапазон
       согласно   загружаемому   значению   и   вызываться   (установленный   ранее)   обработчик
       пользовательского пространства, если затронута одна из защищённых областей.

       В аргументе command задаётся выполняемая функция. Поддерживаются следующие команды:

       GS_ENABLE
              Включает  средство  защищённого  хранения  для  вызывающей  задачи.  Первоначально,
              содержимое блока управления защищённым  хранением  будет  заполнено  нулями.  После
              включения  из  кода  пользовательского  пространства можно вызвать инструкцию «Load
              Guarded  Storage   Controls»   (LGSC)   (или   обёрточную   функцию   load_gs_cb(),
              предоставляемую    заголовочным    файлом   asm/guarded_storage.h)   для   загрузки
              произвольного блока управления.  Пока  задача  включена,  ядро  будет  сохранять  и
              восстанавливать   вызывающее   содержимое   регистров   защищённого   хранения  при
              переключении контекста.

       GS_DISABLE
              Выключает средство защищённого хранения  для  вызывающей  задачи.  Ядро  перестанет
              сохранять  и восстанавливать содержимое регистров защищённого хранения,  содержимое
              регистров этой задачи будет утрачено.

       GS_SET_BC_CB
              Устанавливает широковещательный блок  управления  защищённым  хранением  равным  из
              предоставленного  в  аргументе  gs_cb.  Вызывается  для  нити  и связывает заданный
              широковещательный блок управления защищённым хранением с вызывающей задачей. Данный
              блок управления будет использован в команде широковещания GS_BROADCAST.

       GS_CLEAR_BC_CB
              Стирает  широковещательный  блок  управления  защищённым хранением. Блок управления
              защищённым хранением  больше  не  имеет  связи,  установленной  с  помощью  команды
              GS_SET_BC_CB.

       GS_BROADCAST
              Посылает   широковещание   всем   нитям,   родственным  вызывающей  задаче.  Каждый
              родственник  с  установленным  широковещательным   блоком   управления   защищённым
              хранением   загрузит   этот   блок   управления   и  включит  защищённое  хранение.
              Широковещательный  блок  управления  защищённым  хранением   уничтожается;   второе
              широковещание  без  обновления хранимого блока управления с помощью GS_SET_BC_CB ни
              сработает.

       В аргументе gs_cb указывается адрес структуры блока управления защищённым хранением и пока
       используется  только  в  команде GS_SET_BC_CB; все остальные упомянутые команды игнорируют
       этот аргумент.

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

       При успешном выполнении s390_guarded_storage() возвращает значение 0.

       В случае ошибки возвращается -1, а errno устанавливается в значение ошибки.

ОШИБКИ

       EFAULT Значение command  равно  GS_SET_BC_CB  и  копирование  структуры  блока  управления
              защищённым хранением, указанное в аргументе gs_cb завершилось ошибкой.

       EINVAL Значение аргумента command некорректно.

       ENOMEM Значение command равно GS_ENABLE или GS_SET_BC_CB и выделение места под новый блока
              управления защищённым хранением завершилось ошибкой.

       EOPNOTSUPP
              Средство защищённого хранения не поддерживается оборудованием.

ВЕРСИИ

       Данный системный вызов появился в Linux 4.12.

СТАНДАРТЫ

       Данный системный вызов есть только в Linux и доступен только на архитектуре s390.

       Средство защищённого хранения доступно начиная с System z14.

ЗАМЕЧАНИЯ

       Описание средства защищённого хранения вместе с инструкциями, блоком управления защищённым
       хранением,  структурой  списка  событий  защищённого  хранения  доступно в «z/Architecture
       Principles of Operations» начиная с 12-го выпуска.

       В структуре gs_cb есть поле gsepla (Guarded Storage Event Parameter List Address), которое
       является  указателем  пользовательского  пространства  на  структуру Guarded Storage Event
       Parameter List (содержащей адрес вышеупомянутого обработчика событий в поле gseha),  а  её
       описание   доступно   как  определение  структурного  типа  gs_epl  в  заголовочном  файле
       asm/guarded_storage.h.

СМ. ТАКЖЕ

       syscall(2)

ПЕРЕВОД

       Русский   перевод   этой   страницы   руководства    был    сделан    Alexander    Golubev
       <fatzer2@gmail.com>,   Azamat   Hackimov  <azamat.hackimov@gmail.com>,  Hotellook,  Nikita
       <zxcvbnm3230@mail.ru>,       Spiros       Georgaras       <sng@hellug.gr>,       Vladislav
       <ivladislavefimov@gmail.com>,    Yuri    Kozlov   <yuray@komyakino.ru>   и   Иван   Павлов
       <pavia00@gmail.com>

       Этот  перевод  является  бесплатной  документацией;  прочитайте  Стандартную  общественную
       лицензию GNU версии 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ или более позднюю, чтобы
       узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

       Если вы обнаружите ошибки в переводе  этой  страницы  руководства,  пожалуйста,  отправьте
       электронное письмо на ⟨man-pages-ru-talks@lists.sourceforge.net⟩.