Функция
getpagesize()
Возвращает количество байтов в странице. Под страницей подразумевается то,
что имеется ввиду в описании функции
mmap(2),
когда говорится о том, что файлы отображаются постранично.
Размер страниц, используемых
mmap
определяется через
#include <unistd.h>
long sz = sysconf(_SC_PAGESIZE);
(некоторые системы позволяют вместо _SC_PAGESIZE
использовать _SC_PAGE_SIZE) или
SVR4, 4.4BSD, SUSv2.
В SUSv2 функция
getpagesize()
помечена как "legacy", а из POSIX 1003.1-2001 она была убрана.
HPUX эту функцию не поддерживает.
ЗАМЕЧАНИЯ
Поддерживается ли функция
getpagesize
в Linux зависит от архитектуры. Если поддерживается, то она возвращает
символ PAGE_SIZE ядра, который зависит от архитектуры и модели машины.
Как правило, создаваемые бинарные файлы используются для всей
архитектуры, а не для конкретной одной модели. Поэтому рекомендуется
определять PAGE_SIZE не на стадии компиляции из файла заголовка, а при
выполнении программы с помощью данной функции, по крайней мере на тех
архитектурах (таких как sun4), где зависимость от модели существует.
В этом случае функции
getpagesize()
libc4, libc5 и glibc 2.0 не решат проблему, так возвращают статически
унаследованное значение, не используя системный вызов. В glibc 2.1 это
исправлено.