SWAPON(2)

名前
swapon, swapoff - ファイル/デバイスへのスワップ(swap)を開始/停止する

書式
#include <unistd.h>
#include <asm/page.h> /* to find PAGE_SIZE */
#include <sys/swap.h>

int swapon(const char *path, int swapflags);
int swapoff(const char *path);

説明
swapon は path で指定されたファイルやブロック・デバイス(block device)に スワップ領域(swap area)を設定する。 swapoff は path で指定されたファイルやブロック・デバイスへのスワップを停止する。

swapon は swapflags 引き数を取る。 もし swapflags に SWAP_FLAG_PREFER ビットが設定された場合は、新しいスワップ領域はデフォルトよりも高い 優先度(priority)を持つ。優先度は以下のようにコード化されている。

(prio << SWAP_FLAG_PRIO_SHIFT) & SWAP_FLAG_PRIO_MASK

これらの関数はスーパー・ユーザーのみ使用できる。

優先度
それぞれのスワップ領域は高い(high)と低い(low)のどちらかの 優先度を持つ。デフォルトの優先度は低い。 低い優先度の領域において、新しい領域は古い領域よりさらに低い 優先度を持つ。

swapflags が設定されたものは全てと高い優先度となり、デフォルトよりも高い優先度を持つ。 使用者(caller)はそれらに負でない値が指定できる。 大きな数字は高い優先度を意味する。

高い優先度の領域から順にスワップ・ページ(swap page)として使用される。 より低い優先度の領域を使用する前により高い優先度の 領域を使い切る。もし二つ以上の領域が同じ優先度を持ち、 使える中で一番高い優先度であれば、それらのページは間で ラウンド・ロビン(round robin)方式で配分される。

Linux 1.3.6 において、カーネルは通常はこれらの規則に従っている。 しかし例外も存在している。

返り値
成功した場合はゼロが返される。エラーの場合は -1 が返され、 errno が適切に設定される。

エラー
もし path が不適切な場合、他の多くのエラーが起こる可能性がある。

EPERM
    ユーザーがスーパー・ユーザーでないか、 MAX_SWAPFILES (Linux 1.3.6 では 8 と定義される)以上のスワップを使用している。

EINVAL
    path が存在するが、通常のパスでもブロック・デバイスでもない場合に返される。

ENOENT
    path が存在しない場合に返される。

ENOMEM
    スワップを開始するのに十分なメモリーが存在しない場合に返される。

準拠
これらの関数は Linux 特有であり、移植と意図したプログラムでは 使用してはいけない。 二番目の `swapflags` 引き数は Linux 1.3.2 から導入された。

注意
パーティション(partition)やパスは mkswap(8) によって準備されていなければならない。

関連項目
mkswap(8), swapon(8), swapoff(8)