Provided by: manpages-ru-dev_4.27.0-1_all bug

НАИМЕНОВАНИЕ

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

БИБЛИОТЕКА

       Стандартная библиотека языка C (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.

АТРИБУТЫ

       Описание терминов данного раздела смотрите в attributes(7).
       ┌─────────────────────────────────────────────────────────────────────┬──────────────────────┬──────────┐
       │ ИнтерфейсАтрибутЗначение │
       ├─────────────────────────────────────────────────────────────────────┼──────────────────────┼──────────┤
       │ getauxval()                                                         │ Безвредность в нитях │ MT-Safe  │
       └─────────────────────────────────────────────────────────────────────┴──────────────────────┴──────────┘

СТАНДАРТЫ

       GNU.

ИСТОРИЯ

       glibc 2.16.

ПРИМЕЧАНИЯ

       Основным   пользователем   информации  из  вспомогательного  вектора  является  динамический  компоновщик
       ld-linux.so(8). Вспомогательный вектор удобное и эффективное средство для предоставления ядром некоторого
       набора стандартной  информации,  которая  обычно  или  всегда  требуется  динамическому  компоновщику.  В
       некоторых   случаях  эта  информация  может  быть  получена  через  системные  вызовы,  но  использование
       вспомогательного вектора экономичней.

       Вспомогательный вектор располагается выше списка аргументов и окружения в адресном пространстве процесса.
       Переданный программе вектор можно просмотреть установив  переменную  окружения  LD_SHOW_AUXV  и  запустив
       программу:

           $ LD_SHOW_AUXV=1 sleep 1

       The  auxiliary  vector  of any process can (subject to file permissions)  be obtained via /proc/pid/auxv;
       see proc(5)  for more information.

ОШИБКИ

       До того как ошибка 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> и Kirill Rekhov <krekhov.dev@gmail.com>

       Этот перевод является свободной программной документацией; он распространяется на условиях  общедоступной
       лицензии  GNU  (GNU  General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или
       более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

       Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите  об  этом
       разработчику(ам)   по   его(их)  адресу(ам)  электронной  почты  или  по  адресу  списка рассылки русских
       переводчиков.

Справочные страницы Linux 6.9.1                   2 мая 2024 г.                                     getauxval(3)