Linux Man на русском

  User    Syst    Libr    Device    Files    Other    Admin  



   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.