1 .\" Copyright (C) 2010 Intel Corporation
4 .\" %%%LICENSE_START(VERBATIM)
5 .\" Permission is granted to make and distribute verbatim copies of this
6 .\" manual provided the copyright notice and this permission notice are
7 .\" preserved on all copies.
9 .\" Permission is granted to copy and distribute modified versions of this
10 .\" manual under the conditions for verbatim copying, provided that the
11 .\" entire resulting derived work is distributed under the terms of a
12 .\" permission notice identical to this one.
14 .\" Since the Linux kernel and libraries are constantly changing, this
15 .\" manual page may be incorrect or out-of-date. The author(s) assume no
16 .\" responsibility for errors or omissions, or for damages resulting from
17 .\" the use of the information contained herein. The author(s) may not
18 .\" have taken the same level of care in the production of this manual,
19 .\" which is licensed free of charge, as they might when working
22 .\" Formatted or processed versions of this manual, if unaccompanied by
23 .\" the source, must acknowledge the copyright and authors of this work.
26 .\"*******************************************************************
28 .\" This file was generated with po4a. Translate the source file.
30 .\"*******************************************************************
31 .\" Japanese Version Copyright (c) 2012 Akihiro MOTOKI
32 .\" all rights reserved.
33 .\" Translated 2012-05-05, Akihiro MOTOKI <amotoki@gmail.com>
34 .\" Updated 2013-05-06, Akihiro MOTOKI <amotoki@gmail.com>
36 .TH KEXEC_LOAD 2 2014\-08\-19 Linux "Linux Programmer's Manual"
38 kexec_load \- 新しいカーネルを後で実行するためにロードする
40 \fB#include <linux/kexec.h>\fP
42 \fBlong kexec_load(unsigned long \fP\fIentry\fP\fB, unsigned long
43 \fP\fInr_segments\fP\fB,\fP
45 \fB struct kexec_segment *\fP\fIsegments\fP\fB, unsigned long \fP\fIflags\fP\fB);\fP
47 \fI注\fP: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節を参照。
49 \fBkexec_load\fP() システムコールは、新しいカーネルをロードし、
50 その後の \fBreboot\fP(2) で実行できるようにする。
52 \fIflags\fP 引き数は、システムコールの呼び出しの動作を制御するマスクビットである。 \fIflags\fP には以下の値を指定できる。
54 \fBKEXEC_ON_CRASH\fP (Linux 2.6.13 以降)
55 .\" FIXME Explain in more detail how KEXEC_ON_CRASH is actually used
56 システムのクラッシュ時に、新しいカーネルを自動的に実行する。
58 \fBKEXEC_PRESERVE_CONTEXT\fP (Linux 2.6.27 以降)
60 システムのハードウェアとソフトウェアの状態を保存する。
61 システムの中断時 (suspend) などで使用できる。
62 このフラグは、カーネルの設定で \fBCONFIG_KEXEC_JUMP\fP が有効の場合のみ
63 利用可能であり、 \fInr_segments\fP が 0 より大きい場合のみ効果がある。
65 \fIflags\fP の上位ビット (マスク 0xffff0000 に対応) には、
67 現在のアーキテクチャを使うことを意味する定数 \fBKEXEC_ARCH_DEFAULT\fP か、
68 アーキテクチャ定数 \fBKEXEC_ARCH_386\fP, \fBKEXEC_ARCH_68K\fP, \fBKEXEC_ARCH_X86_64\fP,
69 \fBKEXEC_ARCH_PPC\fP, \fBKEXEC_ARCH_PPC64\fP, \fBKEXEC_ARCH_IA_64\fP,
70 \fBKEXEC_ARCH_ARM\fP, \fBKEXEC_ARCH_S390\fP, \fBKEXEC_ARCH_SH\fP,
71 \fBKEXEC_ARCH_MIPS\fP, \fBKEXEC_ARCH_MIPS_LE\fP の
72 いずれか一つを (OR で) 指定する。指定するアーキテクチャは、
73 システムの CPU で実行可能なものでなければならない。
75 \fIentry\fP 引き数は、カーネルイメージの物理エントリーアドレスである。 \fInr_segments\fP 引き数は、 \fIsegments\fP
76 ポインタが指すセグメントの数である。 なお、セグメント数には、カーネルにより 16 という (強制的な) 上限が課される。 \fIsegments\fP
77 引き数は \fIkexec_segment\fP 構造体の配列で、 この構造体によりカーネルの配置が定義される。
81 struct kexec_segment {
82 void *buf; /* Buffer in user space */
83 size_t bufsz; /* Buffer length in user space */
84 void *mem; /* Physical address of kernel */
85 size_t memsz; /* Physical address length */
90 .\" FIXME Explain the details of how the kernel image defined by segments
91 .\" is copied from the calling process into previously reserved memory.
92 \fIsegments\fP で定義されたカーネルイメージは、
93 呼び出したプロセスから予約済みメモリにコピーされる。
95 成功すると、 \fBkexec_load\fP は 0 を返す。
96 エラーの場合、 \-1 が返り、 \fIerrno\fP にエラーを示す値が設定される。
100 別のクラッシュカーネルがすでにロードされているか、
101 クラッシュカーネルがすでに使用されている。
104 .\" KEXEC_SEGMENT_MAX == 16
105 \fIflags\fP が無効である。 \fInr_segments\fP が大きすぎる。
108 呼び出し側が \fBCAP_SYS_BOOT\fP ケーパビリティを持っていない。
110 \fBkexec_load\fP() システムコールは Linux 2.6.13 で初めて登場した。
112 このシステムコールは Linux 固有である。
114 現在のところ、 \fBkexec_load\fP() は glibc ではサポートされていない。
115 \fBsyscall\fP(2) を使って呼び出すこと。
117 .\" FIXME . Andi submitted a patch for this.
118 .\" Check if it got accepted later.
119 必要な定数は Linux カーネルのソースファイル \fIlinux/kexec.h\fP で定義されている
120 が、現在のところ glibc には公開されていない。
121 そのため、これらの定数は手動で定義しなければならない。
123 このシステムコールは、カーネルの設定で \fBCONFIG_KEXEC\fP が有効になって
126 \fBreboot\fP(2), \fBsyscall\fP(2)
128 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.76 の一部
129 である。プロジェクトの説明とバグ報告に関する情報は
130 http://www.kernel.org/doc/man\-pages/ に書かれている。