Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all bug

名前

       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/ に書かれている。