ИМЯ¶
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@perm.ru> 2005