ИМЯ
getauxval -
    возвращает
    значение
    из
    вспомогательного
    вектора
ОБЗОР
#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;
      возвращаемое
      значение —
      первое
      32-битное
      слово
      описываемого
      здесь
      массива).
      Эта же
      информация
      в формате,
      понятном
      человеку,
      доступна в
      файле /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.
ВЕРСИИ
Функция
    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
    равно
  нулю.