Linux repositories inspector

feature_test_macros(7) - Russkiy

Linux
2019-03-06
Aliases: ftm(7), ftm(7), ftm(7), ftm(7)

man-pages-ru

Russian man pages from the Linux Documentation Project

manpages

Manual pages about using a GNU/Linux system

man-pages

Linux kernel and C library user-space interface documentation

ИМЯ

feature_test_macros - макросы тестирования свойств

ОПИСАНИЕ

Макросы тестирования свойств позволяют программисту контролировать какие определения будут доступны из системных заголовочных файлов при компиляции программы.
ЗАМЕЧАНИЕ: В целях эффективности, макрос тестирования свойств должен быть определён до включения всех заголовочных файлов. Это можно сделать или в команде компиляции (cc -DМАКРОС=значение) или определив макрос в исходном коде до включения заголовочных файлов. Требование включения макроса раньше остальных заголовочных файлов возникло из-за того, что заголовочные файлы могут включаться друг в друга в любой последовательности. Например, в следующих строках определение макроса _GNU_SOURCE может не сработать, так как заголовок <abc.h> сам включает <xyz.h> (в POSIX это разрешается явным образом):
#include <abc.h> #define _GNU_SOURCE #include <xys.h>
Некоторые макросы тестирования свойств полезны для создания переносимых приложений; они позволяют блокировать нестандартные определения. Другие макросы можно использовать для разблокировки нестандартных определений, которые по умолчанию недоступны.
Действие каждого макроса тестирования свойств, описанного далее, можно узнать из содержимого заголовочного файла <features.h>. Замечание: в приложениях не нужно явно включать <features.h> — это не приветствуется. Смотрите ЗАМЕЧАНИЯ.

Обозначение макросов тестирования свойств в справочных страницах

Когда функции требуется определение макроса тестирования свойств в ОБЗОРЕ справочной страницы, обычно, содержится упоминание в следующем виде (этот пример взят из справочной страницы acct(2)):
#include <unistd.h>
int acct(const char *filename);
Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):
acct(): _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)
Символ || означает, что для получения объявления acct(2) из <unistd.h> нужно определить любой из следующих макросов до включения любых заголовочных файлов:
#define _BSD_SOURCE #define _XOPEN_SOURCE /* или любое значение < 500 */
Или же эквивалентные определения могут быть включены следующей командой компиляции:
cc -D_BSD_SOURCE cc -D_XOPEN_SOURCE # или любое значение < 500
Как описывается далее, некоторые макросы тестирования свойств определяются по умолчанию, поэтому макрос не всегда нужно указывать явно даже, если он приведён в ОБЗОРЕ.
В некоторых случаях в справочных страницах используется сокращённая запись требований макросов тестирования свойств (пример из readahead(2)):
#define _GNU_SOURCE #include <fcntl.h>
ssize_t readahead(int fd, off64_t *offset, size_t count);
Такой формат употребляется в случаях, когда достаточно одного макроса для получения объявления функции, и этот макрос не определён по умолчанию.

Макросы тестирования свойств, распознаваемые glibc

В следующих параграфах описаны макросы тестирования свойств, управляющие Linux glibc 2.x, где x > 0.
Если кратко:
* Макросы, которые вам, вероятно, понадобится использовать в современном коде: _POSIX_C_SOURCE (определения из различных версий POSIX.1), _XOPEN_SOURCE (определения из различных версий SUS), _GNU_SOURCE (специальные возможности GNU и/или Linux) и _DEFAULT_SOURCE (определения, которые, обычно, включены по умолчанию).
* Некоторые макросы определяют значения по умолчанию. То есть, хотя один или более макросов могут быть указаны как необходимые в ОБЗОР справочной страницы, возможно необязательно определять их явно. Полное описание значений по умолчанию приведены далее в этой справочной странице.
* Определение _XOPEN_SOURCE со значением 600 и более даёт тот же эффект что и определение _POSIX_C_SOURCE со значением 200112L и больше. Если требуется
_POSIX_C_SOURCE >= 200112L
в макросах тестирования свойств ОБЗОРА справочной страницы, то это неявным образом тоже что и:
_XOPEN_SOURCE >= 600
* Определение _XOPEN_SOURCE со значением 700 и более даёт тот же эффект что и определение _POSIX_C_SOURCE со значением 200809L и больше. Если требуется
_POSIX_C_SOURCE >= 200809L
в макросах тестирования свойств ОБЗОРА справочной страницы, то это неявным образом тоже что и:
_XOPEN_SOURCE >= 700
В Linux glibc распознаются следующие макросы тестирования свойств:
__STRICT_ANSI__
Стандарт ISO C. Этот макрос неявно определяется компилятором gcc(1), если он вызывается с флагом -std=c99 или -ansi.
_POSIX_C_SOURCE
При определении этого макроса из заголовочных файлов становится доступно следующее:
o При значении 1 доступны определения, удовлетворяющие POSIX.1-1990 и ISO C (1990).
o При значении 2 и более дополнительно доступны определения, удовлетворяющие POSIX.2-1992.
o При значении 199309L и более дополнительно доступны определения, удовлетворяющие POSIX.1b (расширения для реального времени).
o При значении 199506L и более дополнительно доступны определения, удовлетворяющие POSIX.1c (нити).
o (начиная с glibc 2.3.3) При значении 200112L и более доступны определения, удовлетворяющие базовой спецификации POSIX.1-2001 (за исключением расширения XSI) а также свойства C95 (начиная с glibc 2.12) и C99 (начиная с glibc 2.10). Другими словами это эквивалент определения _ISOC99_SOURCE.
o (начиная с glibc 2.10) При значении 200809L и более доступны определения, удовлетворяющие базовой спецификации POSIX.1-2008 (за исключением расширения XSI).
_POSIX_SOURCE
Определение этого устаревшего макроса с любым значением эквивалентно определению _POSIX_C_SOURCE со значением 1.
Так как этот макрос устарел, его использование, обычно, не описывается при обсуждении требований макросов тестирования свойств в справочной странице.
_XOPEN_SOURCE
При определении этого макроса из заголовочных файлов становится доступно следующее:
o Определение с любым значением делает доступным определения, удовлетворяющие POSIX.1, POSIX.2 и XPG4.
o При значении 500 и более дополнительно доступны определения, удовлетворяющие SUSv2 (UNIX 98).
o (начиная с glibc 2.2) При значении 600L и более дополнительно доступны определения, удовлетворяющие SUSv3 (UNIX 03; т. е., базовой спецификации POSIX.1-2001 плюс расширение XSI), и определения C99.
o (начиная с glibc 2.10) При значении 700 и более дополнительно доступны определения, удовлетворяющие SUSv4 (т. е., базовой спецификации POSIX.1-2008 плюс расширение XSI).
If __STRICT_ANSI__ не определено или определено _XOPEN_SOURCE со значением больше или равно 500 и явно не определено _POSIX_SOURCE или _POSIX_C_SOURCE, то неявно определяются следующие макросы:
o _POSIX_SOURCE определяется со значением 1.
o _POSIX_C_SOURCE определяется согласно значению _XOPEN_SOURCE:
_XOPEN_SOURCE < 500
_POSIX_C_SOURCE определяется со значением 2.
500 <= _XOPEN_SOURCE < 600
_POSIX_C_SOURCE определяется со значением 199506L.
600 <= _XOPEN_SOURCE < 700
_POSIX_C_SOURCE определяется со значением 200112L.
700 <= _XOPEN_SOURCE (начиная с glibc 2.10)
_POSIX_C_SOURCE определяется со значением 200809L.
Также, определение _XOPEN_SOURCE со значением 500 и более даёт тот же эффект что и определение _XOPEN_SOURCE_EXTENDED.
_XOPEN_SOURCE_EXTENDED
Если этот макрос определён вместе с _XOPEN_SOURCE, то доступны определения, соответствующие расширениям UNIX (UNIX 95) XPG4v2 (SUSv1). Определение _XOPEN_SOURCE со значением 500 и более также вызывает эффект, подобный _XOPEN_SOURCE_EXTENDED. Использование _XOPEN_SOURCE_EXTENDED в новом коде следует избегать.
Так как определение _XOPEN_SOURCE со значением 500 и более даёт тот же эффект, что и _XOPEN_SOURCE_EXTENDED, последний (устаревший) макрос тестирования свойств, обычно, не описывается в ОБЗОРЕ справочной страницы.
_ISOC99_SOURCE (начиная с glibc 2.1.3)
Делает доступными объявления, удовлетворяющие требованиям стандарта ISO C99.
Ранние версии glibc 2.1.x распознавали макрос-эквивалент _ISOC9X_SOURCE (так как стандарт C99 ещё не был утверждён). Хотя использование последнего макроса не рекомендуется, glibc пока поддерживает его для обратной совместимости.
Делает доступными определения стандарта ISO C (1990) Amendment 1 («C95»). Основным изменением в C95 была поддержка международных наборов символов.
Вызов компилятора C с параметром -std=c99 работает также как если был бы указан этот макрос.
_ISOC11_SOURCE (начиная с glibc 2.16)
Делает доступными объявления, удовлетворяющие требованиям стандарта ISO C11. Определение этого макроса также включает свойства C99 и C95 (подобно _ISOC99_SOURCE).
Вызов компилятора C с параметром -std=c11 работает также как если был бы указан этот макрос.
_LARGEFILE64_SOURCE
Делает доступными объявления альтернативного программного интерфейса, определяемого в LFS (Large File Summit) как «переходного расширение» на Single UNIX Specification (смотрите программный интерфейс состоит из набора новых объектов (т. е., функций и типов), чьи имена оканчиваются на «»64 (например, off64_t и off_t, lseek64() и lseek(), и т. д.). В новых программах не нужно указывать этот макрос; вместо него указывайте _FILE_OFFSET_BITS=64.
_LARGEFILE_SOURCE
Данный макрос исторически используется для предоставления определённых функций (в частности, fseeko(3) и ftello(3)), которые обходят адресные ограничения раннего программного интерфейса (fseek(3) и ftell(3)), в котором для файловых смещений использовался long int. Данный макрос неявно определяется, если определён _XOPEN_SOURCE со значением больше или равным 500. В новых программах не нужно определять данный макрос; определение _XOPEN_SOURCE или _FILE_OFFSET_BITS со значением 64 является более предпочтительным механизмом для достижения того же результата.
_FILE_OFFSET_BITS
При определении данного макроса со значением 64 ссылки на 32-битные функции и типы данных, относящиеся к файловому вводу-выводу и операциям с файловой системой, автоматически преобразуются в их 64-битные прототипы. Это полезно для выполнения ввода-вывода в огромные файлы (> 2 гигабайт) на 32-битных системах (определение данного макроса позволяет корректно написанным программам использовать огромные файлы, для чего требуется только перекомпиляция).
64-битные системы сразу позволяют работать с файлами размером больше 2 гигабайт, и на этих системах данный макрос ничего не делает.
_BSD_SOURCE (устарел начиная с glibc 2.20)
Определение данного макроса с любым значением приводит к доступности из заголовочных файлов определений BSD.
В glibc до версии 2.18 включительно при определении данного макроса также отдаётся приоритет определениям BSD в ситуациях, когда имеется конфликт со стандартами. Если определён один из макросов _SVID_SOURCE, _POSIX_SOURCE, _POSIX_C_SOURCE, _XOPEN_SOURCE, _XOPEN_SOURCE_EXTENDED или _GNU_SOURCE, то определения BSD не используются. Начиная с glibc 2.19 при наличии макроса _BSD_SOURCE определения BSD в случае конфликта приоритета не имеют.
Начиная с glibc 2.20 этот макрос считается устаревшим. Теперь он действует также как определение _DEFAULT_SOURCE, но при компиляции генерируется предупреждение (если также не определён _DEFAULT_SOURCE). Используйте _DEFAULT_SOURCE вместо него. Чтобы для кода, которому требуется _BSD_SOURCE в glibc 2.19 и старее и _DEFAULT_SOURCE в glibc 2.20 и новее, не выдавалось предупреждение при компиляции определите _BSD_SOURCE и _DEFAULT_SOURCE одновременно.
_SVID_SOURCE (устарел начиная с glibc 2.20)
При определении этого макроса с любым значением из заголовочных файлов становятся доступны определения System V (SVID == System V Interface Definition; смотрите standards(7)).
Начиная с glibc 2.20 этот макрос устарел также как _BSD_SOURCE.
_DEFAULT_SOURCE (начиная с glibc 2.19)
Данный макрос можно определить, чтобы точно знать, что будут доступны определения «по умолчанию» даже, если умолчательные макросы отключены, что случается, когда отдельные макросы определяются явно, или компилятор вызывается в одном из своих «стандартных» режимов (например, cc -std=c99). Определение _DEFAULT_SOURCE без определения отдельных макросов или вызов компилятора в одном из его «стандартных» режимов не работают.
Определения «по умолчанию» охватывают все, которые требуются POSIX.1-2008 и ISO C99, а также различные определения появившиеся из BSD и System V. В glibc 2.19 и старее эти значения по умолчанию приблизительно эквивалентны явному определению следующего:
cc -D_BSD_SOURCE -D_SVID_SOURCE -D_POSIX_C_SOURCE=200809
_ATFILE_SOURCE (начиная с glibc 2.4)
При определении этого макроса с любым значением из заголовочных файлов становятся доступны объявления набора функций с суффиксом «at»; смотрите openat(2). Начиная с glibc 2.10 данный макрос также неявно определяется, если определён _POSIX_C_SOURCE со значением 200809L или больше.
_GNU_SOURCE
При определении этого макроса (с любым значением) неявно определяются _ATFILE_SOURCE, _LARGEFILE64_SOURCE, _ISOC99_SOURCE, _XOPEN_SOURCE_EXTENDED, _POSIX_SOURCE, _POSIX_C_SOURCE со значением 200809L (200112L в версиях glibc до 2.10; 199506L в версиях glibc до 2.5; 199309L в версиях glibc до 2.1) и _XOPEN_SOURCE со значением 700 (600 в версиях glibc до 2.10; 500 в версиях glibc до 2.2). Также становятся доступны различные расширения GNU.
Начиная с glibc 2.19 определение _GNU_SOURCE также неявно определяет _DEFAULT_SOURCE. В glibc до 2.20 версии определение _GNU_SOURCE также неявно определяет _BSD_SOURCE и _SVID_SOURCE.
_REENTRANT
В прошлом, этот макрос требовалось определять для различных библиотек C, чтобы работал многонитевой код (некоторым библиотекам C это всё ещё требуется). В glibc этот макрос также включает определения определённых реентерабельных функций.
Однако glibc уже давно по умолчанию безопасна для нитей; начиная glibc 2.3 единственным эффектом определения _REENTRANT является включение одного или двух определений, которые также включаются определением _POSIX_C_SOURCE со значением 199606L или больше.
В настоящий момент _REENTRANT устарел. В glibc 2.25 и новее определение _REENTRANT эквивалентно определению _POSIX_C_SOURCE со значением 199606L. Если выбирается более высокий уровень соответствия POSIX (например, самим _POSIX_C_SOURCE, _XOPEN_SOURCE, _DEFAULT_SOURCE или _GNU_SOURCE), то определение не действует _REENTRANT.
Данный макрос автоматически определяется, если выполняется компиляция cc -pthread.
_THREAD_SAFE
Синоним (устарел) _REENTRANT, предоставляется для совместимости с некоторыми другими реализациями.
_FORTIFY_SOURCE (начиная с glibc 2.3.4)
Определение этого макроса вызывает выполнение нескольких простых проверок для обнаружения ошибок переполнения буфера, которые возникают в различных функциях работы со строками и памятью (например, memcpy(3), memset(3), stpcpy(3), strcpy(3), strncpy(3), strcat(3), strncat(3), sprintf(3), snprintf(3), vsprintf(3), vsnprintf(3), gets(3) и их варианты для работы с широкими символами). Для некоторых функций проверяется целостность аргумента; например, проверяется, что open(2) передали в аргументе mode, если указан флаг O_CREAT. Обнаруживаются не все проблемы, только самые распространённые.
Если значение _FORTIFY_SOURCE равно 1 и уровень оптимизации компиляции равен 1 (gcc -O1) и больше, то выполняются проверки, которые не изменяют поведение выверяемых программ. Если значение _FORTIFY_SOURCE равно 2, то добавляются дополнительные проверки, но некоторые выверяемые программы могут завершаться с ошибкой.
Некоторые проверки выполняются во время компиляции (через макросы, реализованных в заголовочных файлах) и вызывают предупреждение компилятора; другие проверки выполняются во время выполнения и приводят к ошибкам времени выполнения.
Для работы этого макроса требуется поддержка в компиляторе, доступная в gcc(1) начиная с версии 4.0.

Определения по умолчанию, неявные определения и объединяющие определения

Если макросы тестирования свойств не указаны явно, то по умолчанию действуют следующие макросы тестирования свойств: _BSD_SOURCE (в glibc 2.19 и старее), _SVID_SOURCE (в glibc 2.19 и старее), _DEFAULT_SOURCE (начиная с glibc 2.19), _POSIX_SOURCE и _POSIX_C_SOURCE=200809L (200112L в версиях glibc до 2.10; 199506L в версиях glibc до 2.4; 199309L в версиях glibc до 2.1).
Если любой из макросов __STRICT_ANSI__, _ISOC99_SOURCE, _POSIX_SOURCE, _POSIX_C_SOURCE, _XOPEN_SOURCE, _XOPEN_SOURCE_EXTENDED, _BSD_SOURCE (в glibc 2.19 и старее) или _SVID_SOURCE (в glibc 2.19 и старее) указан явно, то по умолчанию не определяются макросы _BSD_SOURCE, _SVID_SOURCE и _DEFAULT_SOURCE.
Если макросы _POSIX_SOURCE и _POSIX_C_SOURCE не указаны явно и не определён __STRICT_ANSI__ или _XOPEN_SOURCE определён со значением 500 или более, то
* _POSIX_SOURCE определяется со значением 1; и
* _POSIX_C_SOURCE определяется с одним из следующих значений:
o 2, если _XOPEN_SOURCE определён со значением меньше 500;
o 199506L, если _XOPEN_SOURCE определён со значением 500 или более, но меньше 600; или
o (начиная с glibc 2.4) 200112L, если _XOPEN_SOURCE определён со значением 600 или более, но меньше 700.
o (начиная с glibc 2.10) 200809L, если _XOPEN_SOURCE определён со значением 700 или более.
o Старые версии glibc не знают о значениях 200112L и 200809L у _POSIX_C_SOURCE, и значение этого макроса зависит от версии glibc.
o Если макрос _XOPEN_SOURCE не определён, то значение _POSIX_C_SOURCE зависит от версии glibc: 199506L в версиях glibc до 2.4; 200112L в glibc от 2.4 до 2.9 и 200809L в glibc 2.10 и новее.
Можно определять несколько макросов; результат складывается.

СООТВЕТСТВИЕ СТАНДАРТАМ

В POSIX.1 определены _POSIX_C_SOURCE, _POSIX_SOURCE и _XOPEN_SOURCE.
Макрос _XOPEN_SOURCE_EXTENDED был определён в XPG4v2 (также называемом SUSv1), но отсутствует в SUSv2 и более новых версиях. Макрос _FILE_OFFSET_BITS отсутствует в стандартах, но используется в некоторых других реализациях.
Макросы _BSD_SOURCE, _SVID_SOURCE, _DEFAULT_SOURCE, _ATFILE_SOURCE, _GNU_SOURCE, _FORTIFY_SOURCE, _REENTRANT и _THREAD_SAFE есть только в Linux (glibc).

ЗАМЕЧАНИЯ

Файл <features.h> есть только в Linux/glibc. В других системах есть аналогичный файл, но, обычно, с другим именем. Данный заголовочный файл, если нужен, автоматически включается из других заголовочных файлов: его необязательно явно указывать для использования макросов тестирования свойств.
Согласно указанным макросам тестирования свойств раньше файла <features.h>, внутри него определяются другие различные макросы, которые проверяются в других заголовочных файлах glibc. Эти макросы имеют имена, начинающиеся с двух подчёркиваний (например, __USE_MISC). Программы никогда не должны определять эти макросы самостоятельно: вместо этого нужно задействовать соответствующий макрос тестирования свойств из перечисленных ранее.

ПРИМЕР

Представленную далее программу можно использовать для изучения какие значения присваиваются макросам тестирования свойств в зависимости от версии glibc и какие макросы тестирования свойств устанавливаются явно. В следующем сеансе оболочки на системе с glibc 2.10 показаны несколько примеров того, что мы увидели:
$ cc ftm.c $ ./a.out _POSIX_SOURCE defined _POSIX_C_SOURCE defined: 200809L _BSD_SOURCE defined _SVID_SOURCE defined _ATFILE_SOURCE defined $ cc -D_XOPEN_SOURCE=500 ftm.c $ ./a.out _POSIX_SOURCE defined _POSIX_C_SOURCE defined: 199506L _XOPEN_SOURCE defined: 500 $ cc -D_GNU_SOURCE ftm.c $ ./a.out _POSIX_SOURCE defined _POSIX_C_SOURCE defined: 200809L _ISOC99_SOURCE defined _XOPEN_SOURCE defined: 700 _XOPEN_SOURCE_EXTENDED defined _LARGEFILE64_SOURCE defined _BSD_SOURCE defined _SVID_SOURCE defined _ATFILE_SOURCE defined _GNU_SOURCE defined

Исходный код программы

/* ftm.c */
#include <stdio.h> #include <unistd.h> #include <stdlib.h>
int main(int argc, char *argv[]) { #ifdef _POSIX_SOURCE
printf("_POSIX_SOURCE defined\n"); #endif
#ifdef _POSIX_C_SOURCE
printf("_POSIX_C_SOURCE defined: %ldL\n", (long) _POSIX_C_SOURCE); #endif
#ifdef _ISOC99_SOURCE
printf("_ISOC99_SOURCE defined\n"); #endif
#ifdef _ISOC11_SOURCE
printf("_ISOC11_SOURCE defined\n"); #endif
#ifdef _XOPEN_SOURCE
printf("_XOPEN_SOURCE defined: %d\n", _XOPEN_SOURCE); #endif
#ifdef _XOPEN_SOURCE_EXTENDED
printf("_XOPEN_SOURCE_EXTENDED defined\n"); #endif
#ifdef _LARGEFILE64_SOURCE
printf("_LARGEFILE64_SOURCE defined\n"); #endif
#ifdef _FILE_OFFSET_BITS
printf("_FILE_OFFSET_BITS defined: %d\n", _FILE_OFFSET_BITS); #endif
#ifdef _BSD_SOURCE
printf("_BSD_SOURCE defined\n"); #endif
#ifdef _SVID_SOURCE
printf("_SVID_SOURCE defined\n"); #endif
#ifdef _DEFAULT_SOURCE
printf("_DEFAULT_SOURCE defined\n"); #endif
#ifdef _ATFILE_SOURCE
printf("_ATFILE_SOURCE defined\n"); #endif
#ifdef _GNU_SOURCE
printf("_GNU_SOURCE defined\n"); #endif
#ifdef _REENTRANT
printf("_REENTRANT defined\n"); #endif
#ifdef _THREAD_SAFE
printf("_THREAD_SAFE defined\n"); #endif
#ifdef _FORTIFY_SOURCE
printf("_FORTIFY_SOURCE defined\n"); #endif
exit(EXIT_SUCCESS); }

СМОТРИТЕ ТАКЖЕ

libc(7), standards(7)
Раздел «Макросы тестирования свойств» в info libc.
/usr/include/features.h

REFERENCED BY

_exit(2), access(2), acct(2), brk(2), chdir(2), chmod(2), chown(2), chroot(2), clock_getres(2), clock_nanosleep(2), fcntl(2), fsync(2), futimesat(2), getdomainname(2), getgroups(2), gethostname(2), getpagesize(2), getrlimit(2), getsid(2), gettimeofday(2), kill(2), link(2), madvise(2), mincore(2), mkdir(2), mknod(2), nanosleep(2), nice(2), open(2), posix_fadvise(2), pread(2), process_vm_readv(2), readlink(2), readv(2), rename(2), select(2), select_tut(2), semop(2), seteuid(2), setpgid(2), setreuid(2), sigaction(2), sigaltstack(2), signal(2), sigpending(2), sigprocmask(2), sigsuspend(2), sigwaitinfo(2), stat(2), stime(2), symlink(2), sync(2), timer_create(2), timer_delete(2), timer_getoverrun(2), timer_settime(2), truncate(2), unlink(2), utimensat(2), vfork(2), vhangup(2), wait(2), wait4(2), a64l(3), abs(3), acos(3), acosh(3), addseverity(3), adjtime(3), asin(3), asinh(3), atan(3), atan2(3), atanh(3), atoi(3), bsd_signal(3), cbrt(3), ceil(3), cfree(3), clearenv(3), clock_getcpuclockid(3), confstr(3), copysign(3), cos(3), cosh(3), ctermid(3), ctime(3), daemon(3), dirfd(3), div(3), drand48(3), drand48_r(3), duplocale(3), dysize(3), ecvt(3), ecvt_r(3), endian(3), erf(3), erfc(3), exec(3), exp(3), exp2(3), expm1(3), fabs(3), fdim(3), ferror(3), fexecve(3), ffs(3), fgetc(3), fgetgrent(3), fgetpwent(3), finite(3), flockfile(3), floor(3), fma(3), fmax(3), fmemopen(3), fmin(3), fmod(3), fopen(3), fpclassify(3), frexp(3), fseeko(3), ftw(3), futimes(3), fwide(3), gamma(3), gcvt(3), getaddrinfo(3), getcwd(3), getdate(3), getdirentries(3), getdtablesize(3), getentropy(3), getenv(3), getgrent(3), getgrent_r(3), getgrnam(3), getgrouplist(3), gethostbyname(3), gethostid(3), getline(3), getloadavg(3), getlogin(3), getmntent(3), getnameinfo(3), getnetent_r(3), getopt(3), getpass(3), getprotoent_r(3), getpwent(3), getpwent_r(3), getpwnam(3), getrpcent_r(3), gets(3), getservent_r(3), getspnam(3), getsubopt(3), getusershell(3), getutent(3), getw(3), grantpt(3), group_member(3), gsignal(3), hypot(3), ilogb(3), inet(3), inet_net_pton(3), initgroups(3), insque(3), isalpha(3), isfdtype(3), isgreater(3), iswblank(3), j0(3), killpg(3), ldexp(3), lgamma(3), lockf(3), log(3), log10(3), log1p(3), log2(3), logb(3), lrint(3), lround(3), malloc(3), mbsnrtowcs(3), memchr(3), mkdtemp(3), mkfifo(3), mkstemp(3), mktemp(3), modf(3), mq_receive(3), mq_send(3), nan(3), newlocale(3), nextafter(3), nl_langinfo(3), on_exit(3), open_memstream(3), opendir(3), perror(3), popen(3), posix_fallocate(3), posix_madvise(3), posix_memalign(3), posix_openpt(3), pow(3), printf(3), profil(3), psignal(3), pthread_attr_setstack(3), pthread_cleanup_push_defer_np(3), pthread_kill(3), pthread_mutex_consistent(3), pthread_mutexattr_setrobust(3), pthread_rwlockattr_setkind_np(3), pthread_sigmask(3), pthread_sigqueue(3), ptsname(3), putenv(3), putpwent(3), qecvt(3), qsort(3), rand(3), random(3), random_r(3), rcmd(3), readdir_r(3), realpath(3), remainder(3), remquo(3), rint(3), round(3), rpmatch(3), scalb(3), scalbln(3), scandir(3), scanf(3), sched_getcpu(3), seekdir(3), sem_wait(3), setbuf(3), setenv(3), setjmp(3), setnetgrent(3), siginterrupt(3), signbit(3), significand(3), sigpause(3), sigqueue(3), sigset(3), sigsetops(3), sigvec(3), sigwait(3), sin(3), sinh(3), sockatmark(3), sqrt(3), stpcpy(3), stpncpy(3), strdup(3), strerror(3), strfromd(3), strnlen(3), strsep(3), strsignal(3), strtod(3), strtok(3), strtol(3), strtoul(3), syslog(3), tan(3), tanh(3), telldir(3), tempnam(3), termios(3), tgamma(3), timegm(3), timeradd(3), tmpnam(3), toascii(3), toupper(3), towlower(3), towupper(3), trunc(3), ttyslot(3), tzset(3), ualarm(3), unlocked_stdio(3), unlockpt(3), uselocale(3), usleep(3), wcpcpy(3), wcpncpy(3), wcscasecmp(3), wcsdup(3), wcsncasecmp(3), wcsnlen(3), wcsnrtombs(3), wordexp(3), wprintf(3), y0(3), intro(2), intro(3), feature_test_macros(7), libc(7), man-pages(7), standards(7), killpg(2), longjmp(3), gd_bof64(3), gd_eof64(3), gd_framenum_subset64(3), gd_frameoffset64(3), gd_getdata64(3), gd_nframes64(3), gd_putdata64(3), gd_seek64(3), gd_tell64(3), procenv(1), getdtablesize(2), sigqueue(2), clock_getres(3), clock_gettime(3), clock_settime(3), sigstack(3), vlimit(3), faccessat(2), fchmodat(2), fchownat(2), fstatat(2), linkat(2), mkdirat(2), mknodat(2), openat(2), readlinkat(2), renameat(2), symlinkat(2), unlinkat(2), dprintf(3), mkfifoat(3), jstrptime(3), pthread_spin_init(3), pthread_spin_lock(3), rt_sigsuspend(2), syscall(2)
⇧ Top