EN JA
GETPAGESIZE(2)
GETPAGESIZE(2) Linux Programmer's Manual GETPAGESIZE(2)

名前

getpagesize -メモリのページ・サイズを取得する

書式

#include <unistd.h>
 
int getpagesize(void);
 

glibc 向けの機能検査マクロの要件 ( feature_test_macros(7) 参照):
 
getpagesize():
glibc 2.12 以降:

_BSD_SOURCE ||
!(_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600)

glibc 2.12 より前: _BSD_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED

説明

getpagesize() 関数はメモリページの大きさをバイト数で返す。ここでいう「ページ」は固定長のブロックであり、 mmap(2) で実行されるメモリ割り当てとファイルマッピングの単位である。

準拠

SVr4, 4.4BSD, SUSv2. SUSv2 では getpagesize() システムコールは「過去の遺物 (LEGACY)」とされており、 POSIX.1-2001 からは外されている。 HP-UX にはこのシステムコールは存在しない。

注意

移植性が必要なアプリケーションでは、 getpagesize() ではなく sysconf(_SC_PAGESIZE) を利用すべきである。



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

 

(ほとんどのシステムでは _SC_PAGESIZE の同義語として _SC_PAGE_SIZE を使用することができる。)

 

getpagesize() が Linux のシステムコールとして存在するかどうかは、そのアーキテクチャに依存している。システムコールとして存在する場合には、カーネルシンボルの PAGE_SIZE を返す。 PAGE_SIZE の値は、アーキテクチャとマシンモデルに依存する。一般に、バイナリは、アーキテクチャごとに1つのバイナリ配布で済ませるために、アーキテクチャには依存しているがマシンモデルには依存していない。つまり、ユーザプログラムはコンパイル時にヘッダーファイルから PAGE_SIZE を見つけて使用すべきではない。少なくとも、マシンモデルについても依存性が存在する (sun4 のような) アーキテクチャにおいては本物のシステムコールを使用する必要がある。尚、 libc4, libc5, glibc 2.0 では、 getpagesize() がシステム・コールを使用せず、固定の値を返すために、この方法は失敗する。glibc 2.1 では大丈夫である。

関連項目

mmap(2), sysconf(3)

この文書について

この man ページは Linux man-pages プロジェクトのリリース 3.51 の一部である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。
2010-11-16 Linux