Provided by: manpages-ru-dev_4.27.0-1_all 

НАИМЕНОВАНИЕ
getauxval - возвращает значение из вспомогательного вектора
БИБЛИОТЕКА
Стандартная библиотека языка C (libc, -lc)
ОБЗОР
#include <sys/auxv.h>
unsigned long getauxval(unsigned long type);
ОПИСАНИЕ
Функция getauxval() возвращает значения из вспомогательного вектора — механизма, с помощью которого
ядерный загрузчик двоичных файлов ELF передаёт информацию в пользовательское пространство при выполнении
программы.
Каждая запись в вспомогательном векторе состоит из пары значений: типа — которым определяется смысл
записи и значением этого типа. Согласно аргументу type, getauxval() возвращает соответствующее значение.
Значения для типов для type представлены в списке далее. Не все значения type есть для всех архитектур.
AT_BASE
Основной (base) адрес программного интерпретатора (обычно, динамического компоновщика).
AT_BASE_PLATFORM
A pointer to a string (PowerPC and MIPS only). On PowerPC, this identifies the real platform; may
differ from AT_PLATFORM. On MIPS, this identifies the ISA level (since Linux 5.7).
AT_CLKTCK
Частота, с которой считает times(2). Это значение также может быть получено с помощью
sysconf(_SC_CLK_TCK).
AT_DCACHEBSIZE
Размер блока кэша данных.
AT_EGID
Эффективный идентификатор группы нити.
AT_ENTRY
Адрес точки старта (entry address) исполняемого файла.
AT_EUID
Эффективный идентификатор пользователя нити.
AT_EXECFD
Файловый дескриптор программы.
AT_EXECFN
A pointer to a string containing the pathname used to execute the program.
AT_FLAGS
Флаги (не используется).
AT_FPUCW
Используемое слово управления FPU (только для SuperH). Оно даёт некоторую информацию о нагрузке
FPU, выполняемой ядром.
AT_GID Реальный идентификатор группы нити.
AT_HWCAP
Битовая маска, зависящая от архитектуры и двоичного программного интерфейса, подробно описывает
возможности процессора. Содержимое битовой маски зависит от аппаратуры (например, в файле
исходного кода ядра arch/x86/include/asm/cpufeature.h описана маска для архитектуры Intel x86;
возвращаемое значение — первое 32-битное слово описываемого здесь массива). Эта же информация в
формате, понятном человеку, доступна в файле /proc/cpuinfo.
AT_HWCAP2 (начиная с glibc 2.18)
Дополнительные упоминания о возможностях процессора.
AT_ICACHEBSIZE
Размер блока кэша инструкций.
AT_L1D_CACHEGEOMETRY
Структура кэша данных L1, в которой закодирован размер строки кэша в байтах в младших 16 битах и
ассоциативность кэша в следующих 16 битах. Значение ассоциативности N выражается 16-битным числом,
указывающим на N-канальную ассоциативность.
AT_L1D_CACHESIZE
Размер кэша данных L1.
AT_L1I_CACHEGEOMETRY
Структура кэша инструкций L1, кодируется также как AT_L1D_CACHEGEOMETRY.
AT_L1I_CACHESIZE
Размер кэша инструкций L1.
AT_L2_CACHEGEOMETRY
Структура кэша L2, кодируется также как AT_L1D_CACHEGEOMETRY.
AT_L2_CACHESIZE
Размер кэша L2.
AT_L3_CACHEGEOMETRY
Структура кэша L3, кодируется также как AT_L1D_CACHEGEOMETRY.
AT_L3_CACHESIZE
Размер кэша L3.
AT_PAGESZ
Размер системной страницы (это же значение возвращается sysconf(_SC_PAGESIZE)).
AT_PHDR
Адрес заголовков программы исполняемого файла.
AT_PHENT
Размер элемента заголовка программы.
AT_PHNUM
Количество заголовков программы.
AT_PLATFORM
Указатель на строку, описывающую аппаратную платформу, на которой выполняется программа.
Динамический компоновщик использует её при рассмотрении значений rpath.
AT_RANDOM
Адрес 16 байт, содержащих произвольное значение.
AT_SECURE
Содержит ненулевое значение, если исполняемый файл должен считаться безопасным. Чаще всего,
ненулевое значение означает, что процесс выполняет программу с установленным set-user-ID или
set-group-ID битом (то есть его реальный и эффективный UID или GID отличаются от начального) или
же он получает мандаты, запуская двоичный файл с другими мандатами (смотрите capabilities(7)).
Также ненулевое значение может выставляться Linux Security Module. Если значение не ноль, то
динамический компоновщик прекращает использовать определённые переменные окружения (смотрите
ld-linux.so(8)) и изменяется некоторое поведение glibc (также смотрите secure_getenv(3)).
AT_SYSINFO
Точка входа в функцию системного вызова в vDSO. Отсутствует/не нужна для всех архитектур
(например, отсутствует на x86-64).
AT_SYSINFO_EHDR
Адрес страницы, содержащий виртуальный Динамический Общий Объект (Dynamic Shared Object, vDSO),
который ядро создаёт для предоставления более быстрой реализации некоторых системных вызовов.
AT_UCACHEBSIZE
Размер блока универсального кэша.
AT_UID Реальный идентификатор пользователя нити.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При успешном выполнении getauxval() возвращает значение, соответствующее type.Если type не найден, то
возвращается 0.
ОШИБКИ
ENOENT (начиная с glibc 2.19)
В вспомогательном векторе не найдено значение, соответствующее type.
АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).
┌─────────────────────────────────────────────────────────────────────┬──────────────────────┬──────────┐
│ Интерфейс │ Атрибут │ Значение │
├─────────────────────────────────────────────────────────────────────┼──────────────────────┼──────────┤
│ getauxval() │ Безвредность в нитях │ MT-Safe │
└─────────────────────────────────────────────────────────────────────┴──────────────────────┴──────────┘
СТАНДАРТЫ
GNU.
ИСТОРИЯ
glibc 2.16.
ПРИМЕЧАНИЯ
Основным пользователем информации из вспомогательного вектора является динамический компоновщик
ld-linux.so(8). Вспомогательный вектор удобное и эффективное средство для предоставления ядром некоторого
набора стандартной информации, которая обычно или всегда требуется динамическому компоновщику. В
некоторых случаях эта информация может быть получена через системные вызовы, но использование
вспомогательного вектора экономичней.
Вспомогательный вектор располагается выше списка аргументов и окружения в адресном пространстве процесса.
Переданный программе вектор можно просмотреть установив переменную окружения LD_SHOW_AUXV и запустив
программу:
$ LD_SHOW_AUXV=1 sleep 1
The auxiliary vector of any process can (subject to file permissions) be obtained via /proc/pid/auxv;
see proc(5) for more information.
ОШИБКИ
До того как ошибка ENOENT не была добавлена в glibc 2.19, не было способа достоверно определить, что type
не найден, если значение type равно нулю.
СМОТРИТЕ ТАКЖЕ
execve(2), secure_getenv(3), vdso(7), ld-linux.so(8)
ПЕРЕВОД
Русский перевод этой страницы руководства разработал(и) Azamat Hackimov <azamat.hackimov@gmail.com>,
Dmitry Bolkhovskikh <d20052005@yandex.ru>, Vladislav <ivladislavefimov@gmail.com>, Yuri Kozlov
<yuray@komyakino.ru>, Иван Павлов <pavia00@gmail.com> и Kirill Rekhov <krekhov.dev@gmail.com>
Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной
лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или
более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.
Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом
разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских
переводчиков.
Справочные страницы Linux 6.9.1 2 мая 2024 г. getauxval(3)