KEXEC_LOAD(2)

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);

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.7.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 pour la première fois avec le noyau Linux 2.6.13.

CONFORMITÉ
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/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.40 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies peuvent être trouvées à l'adresse <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <URL:http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du projet perkamon <URL:http://perkamon.alioth.debian.org/>.

Veuillez signaler toute erreur de traduction en écrivant à <perkamon-fr@traduc.org>.

Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « LC_ALL=C man <section> <page_de_man> ».