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