注: このシステムコールには glibc のラッパー関数は存在しない。「注意」の節を参照。
flags 引き数は、システムコールの呼び出しの動作を制御するマスクビットである。 flags には以下の値を指定できる。
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 で定義されたカーネルイメージは、 呼び出したプロセスから予約済みメモリーにコピーされる。
必要な定数は Linux カーネルのソースファイル linux/kexec.h で定義されている が、現在のところ glibc には公開されていない。 そのため、これらの定数は手動で定義しなければならない。
このシステムコールは、カーネルの設定で CONFIG_KEXEC が有効になって いる場合にのみ利用できる。
[man1]
[man2]
[man3]
[man4]
[man5]
[man6]
[man7]
[man8]
[a]
[b]
[c]
[d]
[e]
[f]
[g]
[h]
[i]
[j]
[k]
[l]
[m]
[n]
[o]
[p]
[q]
[r]
[s]
[t]
[u]
[v]
[w]
[x]
[y]
[z]