- bullseye-backports 4.18.1-1~bpo11+1
 - testing 4.18.1-1
 - unstable 4.18.1-1
 
| GETAUXVAL(3) | Руководство программиста Linux | GETAUXVAL(3) | 
ИМЯ¶
getauxval - возвращает значение из вспомогательного вектора
СИНТАКСИС¶
#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.
 
ВЕРСИИ¶
Функция getauxval() впервые появилась в glibc 2.16.
АТРИБУТЫ¶
Описание терминов данного раздела смотрите в attributes(7).
| Интерфейс | Атрибут | Значение | 
| getauxval() | Безвредность в нитях | MT-Safe | 
СООТВЕТСТВИЕ СТАНДАРТАМ¶
Эта функция является нестандартным расширением glibc.
ЗАМЕЧАНИЯ¶
Основным пользователем информации из вспомогательного вектора является динамический компоновщик ld-linux.so(8). Вспомогательный вектор удобное и эффективное средство для предоставления ядром некоторого набора стандартной информации, которая обычно или всегда требуется динамическому компоновщику. В некоторых случаях эта информация может быть получена через системные вызовы, но использование вспомогательного вектора экономичней.
Вспомогательный вектор располагается выше списка аргументов и окружения в адресном пространстве процесса. Переданный программе вектор можно просмотреть установив переменную окружения LD_SHOW_AUXV и запустив программу:
  
$ LD_SHOW_AUXV=1 sleep 1
Вспомогательный вектор любого процесса может быть получен (при наличии прав доступа) через /proc/[pid]/auxv; подробней смотрите в proc(5).
ДЕФЕКТЫ¶
До того как ошибка ENOENT не была добавлена в glibc 2.19, не было способа достоверно определить, что type не найден, если значение type равно нулю.
СМ. ТАКЖЕ¶
ЗАМЕЧАНИЯ¶
Эта страница является частью проекта Linux man-pages версии 5.10. Описание проекта, информацию об ошибках и последнюю версию этой страницы можно найти по адресу https://www.kernel.org/doc/man-pages/.
ПЕРЕВОД¶
Русский перевод этой страницы руководства был сделан Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitry Bolkhovskikh <d20052005@yandex.ru>, Vladislav <ivladislavefimov@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>
Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.
Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на man-pages-ru-talks@lists.sourceforge.net.
| 9 июня 2020 г. | GNU |