GETPAGESIZE
Section: Linux Programmer's Manual (2)
Updated: 2007-07-26
Index
JM Home Page
roff page
名前
getpagesize - メモリのページ・サイズを取得する
書式
#include <unistd.h>
int getpagesize(void);
glibc 向けの機能検査マクロの要件
(feature_test_macros(7)
参照):
getpagesize():
_BSD_SOURCE || _XOPEN_SOURCE >= 500
説明
getpagesize()
関数はページの大きさをバイト数で返す。ここでの「ページ」は
mmap(2)
の説明の中で使用されているもので、
mmap()
はこのページサイズの単位でファイルをマップする。
mmap(2)
が使用するページサイズは以下のようにして知ることができる。
-
#include <unistd.h>
long sz = sysconf(_SC_PAGESIZE);
(ほとんどのシステムでは
_SC_PAGESIZE
の同義語として
_SC_PAGE_SIZE
を使用することができる)、もしくは以下のようにする:
-
#include <unistd.h>
int sz = getpagesize();
準拠
SVr4, 4.4BSD, SUSv2.
SUSv2 では
getpagesize()
システムコールは「過去の遺物 (LEGACY)」とされており、
POSIX.1-2001 からは外されている。
HP-UX にはこのシステムコールは存在しない。
移植性が必要なアプリケーションでは、このシステムコールの代わりに
sysconf(_SC_PAGESIZE)
を利用すべきである。
注意
getpagesize()
が Linux のシステムコールとして存在するかどうかは、そのアーキテクチャに
依存している。
システムコールとして存在する場合には、カーネルシンボルの PAGE_SIZE を返す。
PAGE_SIZE は、アーキテクチャとマシンモデルに依存する。
一般に、バイナリは、アーキテクチャごとに1つのバイナリ配布で済ませるために、
アーキテクチャには依存しているがマシンモデルには依存していない。
つまり、ユーザプログラムはコンパイル時にヘッダーファイルから PAGE_SIZE
を見つけて使用すべきではない。
少なくとも、マシンモデルについても依存性が存在する (sun4 のような)
アーキテクチャにおいては本物のシステムコールを使用する必要がある。
尚、 libc4, libc5, glibc 2.0 では、
getpagesize()
がシステム・コールを使用せず、固定の値を返すために、この方法は
失敗する。glibc 2.1 では大丈夫である。
関連項目
mmap(2),
sysconf(3)
Index
- 名前
-
- 書式
-
- 説明
-
- 準拠
-
- 注意
-
- 関連項目
-
This document was created by
man2html,
using the manual pages.
Time: 04:31:43 GMT, November 19, 2007