getauxval - возвращает значение из вспомогательного вектора
getauxval(3)
возвращает значение из вспомогательного вектора
ОБЗОР
#include <sys/auxv.h>
unsigned long getauxval(unsigned long type);
ОПИСАНИЕ
Функция
getauxval() возвращает значения из вспомогательного вектора —
механизма, с помощью которого ядерный загрузчик двоичных файлов ELF передаёт
информацию в пользовательское пространство при выполнении программы.
Каждая запись в вспомогательном векторе состоит из пары значений: типа —
которым определяется смысл записи и значением этого типа. Согласно аргументу
type, getauxval() возвращает соответствующее значение.
Значения для типов для type представлены в списке далее. Не все значения
type есть для всех архитектур.
AT_BASE
Основной (base) адрес программного интерпретатора (обычно, динамического
компоновщика).
AT_BASE_PLATFORM
Строка, определяющая реальную платформу; может отличаться от AT_PLATFORM
(только для PowerPC).
AT_CLKTCK
Частота, с которой считает times(2). Это значение также может быть
получено с помощью sysconf(_SC_CLK_TCK).
AT_DCACHEBSIZE
Размер блока кэша данных.
AT_EGID
Эффективный идентификатор группы нити.
AT_ENTRY
Адрес точки старта (entry address) исполняемого файла.
AT_EUID
Эффективный идентификатор пользователя нити.
AT_EXECFD
Файловый дескриптор программы.
AT_EXECFN
Путь, использованный для запуска программы.
AT_FLAGS
Флаги (не используется).
AT_FPUCW
Используемое слово управления FPU (только для SuperH). Оно даёт некоторую
информацию о нагрузке FPU, выполняемой ядром.
AT_GID
Реальный идентификатор группы нити.
AT_HWCAP
Указатель на многобайтовую маску битов, чьи значения подробно описывают
возможности процессора. Содержимое битовой маски зависит от
аппаратуры(например, в файле исходного кода ядра
arch/x86/include/asm/cpufeature.h описана маска для архитектуры Intel
x86). Эта же информация в формате, понятном человеку, доступна в файле
/proc/cpuinfo.
AT_HWCAP2 (начиная с glibc 2.18)
Дополнительные упоминания о возможностях процессора.
AT_ICACHEBSIZE
Размер блока кэша инструкций.
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 равно 0.