s390_guarded_storage -
операции
со
средством
защищённого
хранения
z/Architecture
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 <
[email protected]>, Azamat Hackimov
<
[email protected]>, Hotellook, Nikita
<
[email protected]>, Spiros Georgaras <
[email protected]>, Vladislav
<
[email protected]>, Yuri Kozlov <
[email protected]>
и Иван
Павлов <
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]