kazmax - Linux で自宅サーバー

getpagesize - システムコールの説明 - Linux コマンド集 一覧表

  1. 名前
  2. 書式
  3. 説明
  4. 歴史
  5. 準拠
  6. 注意
  7. 関連項目

名前

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

書式

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

説明

getpagesize ()関数はページの大きさをバイト数で返す。ここでの「ページ」は   mmap (2) の説明の中で使用されているもので、 mmap ()はこのページサイズの単位でファイルをマップする。
mmap ()が使用するページサイズは以下のようにして知ることができる。

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


(一部のシステムでは _SC_PAGESIZE の代わりに _SC_PAGE_SIZE を使用することができる)、もしくは以下のようにする:

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


歴史

このシステムコールは 4.2BSD で初めて登場した。

準拠

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

注意

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

関連項目