s390_sthyi -
эмулирует
инструкцию
STHYI
Standard C library (
libc,
-lc)
#include <asm/sthyi.h> /* определения констант STHYI_* */
#include <sys/syscall.h> /* определения констант SYS_* */
#include <unistd.h>
int syscall(SYS_s390_sthyi, unsigned long function_code,
void *resp_buffer, uint64_t *return_code,
unsigned long flags);
Note: glibc provides no wrapper for
s390_sthyi(), necessitating
the use of
syscall(2).
Системный
вызов
s390_sthyi()
эмулирует
инструкцию
STHYI (Store Hypervisor Information). Он
предоставляет
информацию
о ресурсах
машины и её
уровни
виртуализации.
В
частности,
возвращается
тип ЦП и
ёмкость, а
также
модель
машины и
другие
свойства.
В
аргументе
function_code
указывается
какую
функцию
нужно
выполнить.
Поддерживаются
следующие
коды:
- STHYI_FC_CP_IFL_CAP
- Вернуть
информацию
о CP (Central Processor) и
ёмкости IFL (Integrated
Facility for Linux).
В
аргументе
resp_buffer
указывается
адрес
буфера
результата.
При
function_code
равном
STHYI_FC_CP_IFL_CAP,
размер
буфера
должен
быть равен
странице (4K).
Если
системный
вызов
вернул 0, то
буфер
результата
будет
заполнен
информацией
о ёмкости
ЦП. В
противном
случае
содержимое
буфера
результата
не
меняется.
В
аргументе
return_code
хранится
код
возврата
инструкции
STHYI; возможно
одно из
следующих
значений:
- 0
- Успешно.
- 4
- Неподдерживаемый
код
функции.
Дополнительную
информацию
о
return_code,
function_code и
resp_buffer
смотрите
по ссылкам,
приведённым
в
ЗАМЕЧАНИЯХ.
Аргумент
flags
предназначен
для
будущих
расширений,
а пока его
значение
должно
быть равно 0.
При
успешном
выполнении
(т. е.
эмуляция
прошла
успешно),
возвращаемое
s390_sthyi()
значение
совпадает
с кодом
условия
инструкций
STHYI —
значением
в
диапазоне
[0..3].
Возвращаемое
значение 0
означает,
что
информация
о ёмкости
ЦП
сохранена
в
*resp_buffer.
Возвращаемое
значение 3
указывает
на
«неподдерживаемый
код
функции» и
содержимое
*resp_buffer не
изменяется.
Значения 1 и 2
зарезервированы.
В случае
ошибки
возвращается
-1, а
errno
устанавливается
в значение
ошибки.
- EFAULT
- Значение,
указанное
в resp_buffer или return_code,
содержит
некорректный
адрес.
- EINVAL
- Значение,
указанное
в flags, не
равно
нулю.
- ENOMEM
- Не
удалось
выделить
память для
обработки
информации
о ёмкости
ЦП.
- EOPNOTSUPP
- Некорректное
значение в
function_code.
Данный
системный
вызов
появился в
Linux 4.15.
Данный
системный
вызов есть
только в Linux и
доступен
только на
архитектуре
s390.
Описание
инструкции
STHYI смотрите
на
странице
документации
При
использовании
интерфейса
системного
вызова
буфер
результата
не имеет
требований
по
выравниванию,
описанных
в
инструкции
STHYI.
Ядро
кэширует
результат
(в Linux 4.16 каждую
секунду).
Последующие
запуски
системного
вызова
могут
вернуть
кэшированный
ответ.
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]