Provided by: manpages-ja-dev_0.5.0.0.20131015+dfsg-2_all
名前
kexec_load - 新しいカーネルを後で実行するためにロードする
書式
#include <linux/kexec.h> long kexec_load(unsigned long entry, unsigned long nr_segments, struct kexec_segment *segments, unsigned long flags); 注: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節を参照。
説明
kexec_load() システムコールは、新しいカーネルをロードし、 その後の reboot(2) で実行できる ようにする。 flags 引き数はマスクビットで、 その上位ビットでシステムコールの呼び出しの動作を制御する。 flags には以下の値を指定できる。 KEXEC_ON_CRASH (Linux 2.6.13 以降) システムのクラッシュ時に、新しいカーネルを自動的に実行する。 KEXEC_PRESERVE_CONTEXT (Linux 2.6.27 以降) 新しいカーネルを実行する前に、 システムのハードウェアとソフトウェアの状態を保存す る。 システムの中断時 (suspend) などで使用できる。 このフラグは、カーネルの設定で CONFIG_KEXEC_JUMP が有効の場合のみ 利用可能であり、 nr_segments が 0 より大きい場合 のみ効果がある。 flags の下位ビットには、実行されるカーネルのアーキテクチャが入る。 現在のアーキテクチャを 使うことを意味する定数 KEXEC_ARCH_DEFAULT か、 アーキテクチャ定数 KEXEC_ARCH_386, KEXEC_ARCH_X86_64, KEXEC_ARCH_PPC, KEXEC_ARCH_PPC64, KEXEC_ARCH_IA_64, KEXEC_ARCH_ARM, KEXEC_ARCH_S390, KEXEC_ARCH_SH, KEXEC_ARCH_MIPS, KEXEC_ARCH_MIPS_LE の いずれか一つを (OR で) 指定する。指定するアーキテクチャは、 システムの CPU で実行可能なものでなければならな い。 entry 引き数は、カーネルイメージの物理エントリーアドレスである。 nr_segments 引き数は、 segments ポインタが指すセグメントの 数である。 segments 引き数は kexec_segment 構造体の配 列で、 この構造体によりカーネルの配置が定義される。 struct kexec_segment { void *buf; /* Buffer in user space */ size_t bufsz; /* Buffer length in user space */ void *mem; /* Physical address of kernel */ size_t memsz; /* Physical address length */ }; segments で定義されたカーネルイメージは、 呼び出したプロセスから予約済みメモリにコピーされ る。
返り値
成功すると、 kexec_load は 0 を返す。 エラーの場合、 -1 が返り、 errno にエラーを示す値が 設定される。
エラー
EBUSY 別のクラッシュカーネルがすでにロードされているか、 クラッシュカーネルがすでに使用さ れている。 EINVAL flags が無効である。 nr_segments が大きすぎる。 EPERM 呼び出し側が CAP_SYS_BOOT ケーパビリティを持っていない。
バージョン
kexec_load() システムコールは Linux 2.6.13 で初めて登場した。
準拠
このシステムコールは Linux 固有である。
注意
現在のところ、 kexec_load() は glibc ではサポートされていない。 syscall(2) を使って呼び出 すこと。 必要な定数は Linux カーネルのソースファイル linux/kexec.h で定義されている が、現在のとこ ろ glibc には公開されていない。 そのため、これらの定数は手動で定義しなければならない。 このシステムコールは、カーネルの設定で CONFIG_KEXEC が有効になって いる場合にのみ利用でき る。
関連項目
reboot(2), syscall(2)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.54 の一部 である。プロジェクト の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。