Provided by: manpages-ja-dev_0.5.0.0.20131015+dfsg-2_all 

名前
swapon, swapoff - ファイル/デバイスへのスワップを開始/停止する
書式
#include <unistd.h>
#include <asm/page.h> /* PAGE_SIZE を見つけるため */
#include <sys/swap.h>
int swapon(const char *path, int swapflags);
int swapoff(const char *path);
説明
swapon() は path で指定されたファイルやブロックデバイスにスワップ領域を設定する。 swapoff() は path で
指定されたファイルやブロックデバイスへのスワップを停止する。
swapon() の swapflags 引き数に SWAP_FLAG_PREFER フラグが指定された場合、 新しいスワップ領域はデフォルトよ
りも高い優先度を持つ。 優先度は以下のように変換されて swapflags に指定する。
(prio << SWAP_FLAG_PRIO_SHIFT) & SWAP_FLAG_PRIO_MASK
SWAP_FLAG_DISCARD フラグが swapon() の swapflags 引き数に指定された場合、 スワップデバイスが破棄
(discard) 操作や trim 操作をサポートしている場合には、 解放されたスワップページは再利用される前に破棄され
る (これにより、SSD (Solid State Device) によっては性能が向上することがあるが、 たいていは性能の向上はな
い)。 「注意」も参照のこと。
これらの関数は特権プロセス (CAP_SYS_ADMIN ケーパビリティ (capability) を持つプロセス) のみが使用できる。
優先度
それぞれのスワップ領域は高 (high) と低 (low) のどちらかの優先度を持つ。 デフォルトの優先度は低である。 低
い優先度の領域において、新しい領域は古い領域よりさらに低い 優先度を持つ。
swapflags が設定されたものは全て高い優先度となり、デフォルトよりも高い優先度を持つ。 使用者はそれらに負で
ない値が指定できる。 大きな数字は高い優先度を意味する。
高い優先度の領域から順にスワップページとして使用される。 より低い優先度の領域を使用する前により高い優先度
の 領域を使い切る。もし二つ以上の領域が同じ優先度を持ち、 使える中で一番高い優先度であれば、それらのペー
ジは間で ラウンドロビン方式で配分される。
Linux 1.3.6 において、カーネルは通常はこれらの規則に従っている。 しかし例外も存在している。
返り値
成功した場合は 0 が返される。エラーの場合は -1 が返され、 errno が適切に設定される。
エラー
EBUSY (swapon() において) 指定された path が既にスワップ領域として使用されている。
EINVAL ファイル path は存在するが、通常のファイルもブロックデバイスも参照していない。 または swapon() に
おいて、指定された path のファイルが有効なスワップの署名 (signature) を 含んでいないか、tmpfs のよ
うなインメモリ (in-memory) のファイルシステム 上にある。 または swapoff() において、 path が現在
のところスワップ領域でない。
ENFILE オープンされたファイルの総数がシステム全体の上限に達していた。
ENOENT ファイル path が存在しない。
ENOMEM スワップを開始するのに十分なメモリーがシステムにない。
EPERM 使用者が CAP_SYS_ADMIN ケーパビリティを持っていない。 もしくは、最大数のスワップファイルがすでに使
用されている (下記の「注意」の節を参照)。
準拠
これらの関数は Linux 特有であり、移植を意図したプログラムでは 使用してはいけない。 二番目の swapflags 引
き数は Linux 1.3.2 から導入された。
注意
パーティションやパスは mkswap(8) によって準備されていなければならない。
使用できるスワップファイルの数には上限があり、その上限は カーネル定数 MAX_SWAPFILES で定義される。
MAX_SWAPFILES の値は、カーネル 2.4.10 より前では 8、 カーネル 2.4.10 以降では 32 である。 カーネル 2.6.18
以降では、カーネルが CONFIG_MIGRATION オプションを有効にして作成された場合、 この上限が 2 少ない値 (つま
り 30) となる (このカーネルでは、 mbind(2) と migrate_pages(2) のページマイグレーション機能用にスワップ
テーブルのエントリーが 二つ予約される)。 カーネル 2.6.32 以降では、カーネルが CONFIG_MEMORY_FAILURE オプ
ションを有効にして作成された場合、 この上限がさらに 1 少ない値となる。
スワップページの破棄は、カーネル 2.6.29 で導入され、その後カーネル 2.6.36 で SWAP_FLAG_DISCARD フラグが指
定された場合にだけ実行されるようになったが、 今でも、このフラグビットが指定されていない場合であっても、
swapon が呼び出された際にスワップ領域全体の破棄が行われる。
関連項目
mkswap(8), swapoff(8), swapon(8)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.54 の一部 である。プロジェクトの説明とバグ報告
に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。
Linux 2010-11-15 SWAPON(2)