Manpages

ИМЯ

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 всё работает правильно.

СМОТРИ ТАКЖЕ

mmap(2), sysconf(3)

ПЕРЕВОД

Перевёл с английского Виктор Вислобоков <corochoone [AT] perm.ru> 2005