ИМЯ
getpagesize − получить размер страницы памяти
ОБЗОР
#include <unistd.h>
int getpagesize(void);
ОПИСАНИЕ
Функция getpagesize() возвращает количество байт на страницу, где "страница" это сущность, используемая таким образом как описано в вызове mmap(2), отображающем файлы в память по-странично.
Размер страниц, которые использует mmap, может быть найден используя
#include
<unistd.h>
long sz = sysconf(_SC_PAGESIZE);
(некоторые системы также позволяют использовать синоним _SC_PAGE_SIZE вместо _SC_PAGESIZE), или
#include
<unistd.h>
int sz = getpagesize();
ИСТОРИЯ
Данный вызов впервые появился в 4.2BSD.
СООТВЕТСТВИЕ СТАНДАРТАМ
SVr4, 4.4BSD, SUSv2. В SUSv2 вызов getpagesize() помечается как "наследие", и в POSIX 1003.1-2001 он был удалён. HPUX не имеет этого вызова.
ЗАМЕЧАНИЯ
Наличие getpagesize() как системного вызова Linux зависит от архитектуры. Если вызов существует, он возвращает переменную ядра PAGE_SIZE, которая зависит от архитектуры и модели компьютера. Обычно, системный вызов зависит от архитектуры, а не от модели компьютера. Это означает, что пользовательская программа не должна брать значение PAGE_SIZE из заголовочного файла в момент компиляции, а должна использовать реальный системный вызов, по крайней мере для тех архитектур (таких как sun4), где вышеописанная зависимость существует. В данном случае libc4, libc5, glibc 2.0 работают неправильно, потому что функция getpagesize() реализованная в них, возвращает статически назначенное значение и не использует системный вызов. В glibc 2.1 всё работает правильно.
СМОТРИ ТАКЖЕ
ПЕРЕВОД
Перевёл с английского Виктор Вислобоков <corochoone [AT] perm.ru> 2005