GETPAGESIZE
Section: Linux Programmer's Manual (2)
Updated: 2017-09-15
Index
JM Home Page
roff page
名前
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() システムコールは「過去の遺物 (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 のような)
アーキテクチャーにおいては本物のシステムコールを使用する必要がある。 尚、 glibc 2.0 では、 getpagesize()
がシステムコールを使用せず、固定の値を返すために、この方法は 失敗する。glibc 2.1 では大丈夫である。
関連項目
mmap(2), sysconf(3)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は
https://www.kernel.org/doc/man-pages/ に書かれている。
Index
- 名前
-
- 書式
-
- 説明
-
- 準拠
-
- 注意
-
- 関連項目
-
- この文書について
-
This document was created by
man2html,
using the manual pages.
Time: 03:33:29 GMT, December 05, 2022