Главная » 2017 » Ноябрь » 19 » man 2 getpagesize
22:23
man 2 getpagesize

SEO sprint - Всё для максимальной раскрутки!





ИМЯ


getpagesize - определяет размер страницы памяти



ОБЗОР


#include <unistd.h>

int getpagesize(void);

Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

getpagesize():
Начиная с glibc 2.19:
_DEFAULT_SOURCE || ! (_POSIX_C_SOURCE >= 200112L)
В glibc с 2.12 по 2.19:
_BSD_SOURCE || ! (_POSIX_C_SOURCE >= 200112L)
До glibc 2.12: _BSD_SOURCE || _XOPEN_SOURCE >= 500



ОПИСАНИЕ


Вызов getpagesize() возвращает количество байтов в странице памяти, где «страница»
представляет собой блок фиксированной длины, единица измерения при выделения
памяти и файлового отображения, выполняемого с помощью mmap(2).



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


SVr4, 4.4BSD, SUSv2. В SUSv2 вызов getpagesize() отмечен как УСТАРЕВШИЙ, и был
удалён из POSIX.1-2001; в HP-UX такого вызова нет.



ЗАМЕЧАНИЯ


В переносимых программах вместо getpagesize() следует использовать
sysconf(_SC_PAGESIZE):

#include <unistd.h>
long sz = sysconf(_SC_PAGESIZE);

(большинство систем позволяют использовать _SC_PAGE_SIZE вместо _SC_PAGESIZE.)

В Linux системный вызов getpagesize() есть не на всех архитектурах. Если он есть,
то он возвращает символ ядра PAGE_SIZE, чьё значение зависит от архитектуры и
модели компьютера. Как правило, создаваемые двоичные файлы используются для всей
архитектуры, а не для конкретной одной модели. Поэтому рекомендуется определять
PAGE_SIZE не на стадии компиляции из файла заголовка, а при выполнении программы с
помощью данной функции, по крайней мере на тех архитектурах (таких как sun), где
зависимость от модели существует. В этом случае в библиотечные вызовы glibc 2.0
завершатся неудачно, так как её getpagesize() возвращает статически определённое
значение и не использует системный вызов. В glibc 2.1 это исправлено.



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


mmap(2), sysconf(3)



Категория: (2) Системные вызовы ядра (функции языка Си) | Просмотров: 427 | Добавил: Администратор | Рейтинг: 0.0/0
Всего комментариев: 0
avatar