Provided by: manpages-ru-dev_4.19.0-7_all bug

ИМЯ

       getauxval - возвращает значение из вспомогательного вектора

LIBRARY

       Standard C library (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.

ВЕРСИИ

       The getauxval()  function was added in 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 равно нулю.

СМ. ТАКЖЕ

       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>

       Этот  перевод  является  бесплатной  документацией;  прочитайте  Стандартную  общественную
       лицензию GNU версии 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ или более позднюю, чтобы
       узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

       Если  вы  обнаружите  ошибки  в  переводе этой страницы руководства, пожалуйста, отправьте
       электронное письмо на ⟨man-pages-ru-talks@lists.sourceforge.net⟩.