NOM¶
kexec_load - charger un nouveau noyau pour une exécution ultérieure
SYNOPSIS¶
#include <linux/kexec.h>
long kexec_load(unsigned long entry, unsigned long
nr_segments,
struct kexec_segment *segments, unsigned long
flags);
Remarque : il n'existe pas de fonction glibc autour de cet appel
système ; consultez
NOTES.
DESCRIPTION¶
L'appel système
kexec_load() charge un nouveau noyau qui peut
être exécuté plus tard avec un
reboot(2).
Le paramètre
flags est un masque dont les bits de poids fort
contrôlent l'opération de l'appel. Les valeurs suivantes peuvent
être spécifiées dans
flags :
- KEXEC_ON_CRASH (depuis Linux 2.6.13)
- Exécuter automatiquement le nouveau noyau en cas de
crash système.
- KEXEC_PRESERVE_CONTEXT (depuis Linux 2.6.27)
- Préserver le matériel système et les
états logiciels avant d'exécuter le nouveau noyau. Ceci pourrait
être utilisé pour la mise en veille prolongée du
système. Cet attribut n'est disponible que si le noyau a
été configuré avec CONFIG_KEXEC_JUMP, et n'est
effectif que si nr_segments est strictement positif.
Les bits de poids faible de
flags contiennent l'architecture du noyau qui
est en attente d'exécution. Indiquez la constante
KEXEC_ARCH_DEFAULT pour utiliser l'architecture actuelle, ou une ou
plusieurs (en utilisant l'opérateur OU) des constantes d'architecture
suivantes :
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 et
KEXEC_ARCH_MIPS_LE. L'architecture doit
pouvoir être exécutée sur le processeur du système.
Le paramètre
entry est l'adresse du point d'entrée physique
dans l'image noyau. Le paramètre
nr_segments est le nombre de
segments pointés par le pointeur
segments. Le paramètre
segments est un tableau de
kexec_segment structures qui
définissent la disposition du noyau :
struct kexec_segment {
void *buf; /* Tampon dans l'espace utilisateur */
size_t bufsz; /* Taille du tampon */
void *mem; /* Adresse physique du noyau */
size_t memsz; /* Taille de l'adresse physique */
};
L'image noyau définie par
segments est copiée depuis le
processus appelant dans la mémoire préalablement réservée.
VALEUR RENVOYÉE¶
S'il réussit,
kexec_load() renvoie zéro. En cas d'erreur, il
renvoie -1 et remplit
errno avec la valeur d'erreur.
ERREURS¶
- EBUSY
- Un autre crash du noyau est déjà en train de
charger, ou un crash du noyau est déjà utilisé.
- EINVAL
- flags est invalide, ou nr_segments est trop
grand
- EPERM
- L'appelant n'a pas la capacité
CAP_SYS_BOOT.
VERSIONS¶
L'appel système
kexec_load() est apparu dans Linux 2.6.13.
Cet appel système est spécifique à Linux.
NOTES¶
Actuellement, il n'y a pas de prise en charge de
kexec_load() dans la
glibc. Il faut l'appeler avec
syscall(2).
Les constantes nécessaires sont définies dans le fichier source du
noyau Linux
linux/kexec.h, qui n'est actuellement pas exporté par
la glibc. Ces constantes doivent donc être définies manuellement.
Cet appel système n'est disponible que si le noyau a été
configuré avec
CONFIG_KEXEC.
VOIR AUSSI¶
reboot(2),
syscall(2)
COLOPHON¶
Cette page fait partie de la publication 3.44 du projet
man-pages Linux.
Une description du projet et des instructions pour signaler des anomalies
peuvent être trouvées à l'adresse
<
http://www.kernel.org/doc/man-pages/>.
TRADUCTION¶
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a
<
http://po4a.alioth.debian.org/> par l'équipe de traduction
francophone au sein du projet perkamon
<
http://perkamon.alioth.debian.org/>.
Veuillez signaler toute erreur de traduction en écrivant à
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet
manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document
en utilisant la commande «
man -L C
<section> <page_de_man> ».