KEXEC_LOAD

Section: Linux Programmer's Manual (2)
Updated: 2014-08-19
Index JM Home Page
 

名前

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 の上位ビット (マスク 0xffff0000 に対応) には、 実行されるカーネルのアーキテクチャーが入る。 現在のアーキテクチャーを使うことを意味する定数 KEXEC_ARCH_DEFAULT か、 アーキテクチャー定数 KEXEC_ARCH_386, KEXEC_ARCH_68K, 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 ポインターが指すセグメントの数である。 なお、セグメント数には、カーネルにより 16 という (強制的な) 上限が課される。 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.78 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。

関連キーワード

カーネル   kexec   load   segments   引き数   アーキテクチャー   定数   ロード   long   segment   クラッシュ   struct   マスク   ビット   イメージ   セグメント   構造体   Buffer   user   space   size   length   Physical   address   kernel

Linux マニュアル 一覧

関連するコマンド・関数

kexec_file_load.2   shmctl.2   init_module.2   modinfo.8   query_module.2   arm_fadvise.2
 

Index

名前
書式
説明
返り値
エラー
バージョン
準拠
注意
関連項目
この文書について

This document was created by man2html, using the manual pages.
Time: 04:38:59 GMT, October 11, 2026