NOM
swapon, swapoff - Activer/désactiver un fichier ou périphérique de swap
SYNOPSIS
#include <unistd.h>
#include <asm/page.h> /* pour avoir PAGE_SIZE */
#include <sys/swap.h>
int swapon(const char *path, int swapflags);
int swapoff(const char *path);
swapon() active le swap sur le fichier ou le périphérique en mode bloc
indiqué dans path. swapoff() arrête le swap sur le fichier ou le
périphérique en mode bloc indiqué dans path.
swapon() utilise un argument swapflags. Si cet argument a son bit
SWAP_FLAG_PREFER à 1, la nouvelle zone de swap disposera d’une priorité
plus élevée que la zone de swap par défaut. La priorité est codée
ainsi :
(prio << SWAP_FLAG_PRIO_SHIFT) & SWAP_FLAG_PRIO_MASK
Cette fonction ne peut être appelée que par un processus privilégié
(qui a la capacité CAP_SYS_ADMIN.
Priorité
Chaque zone de swap a une priorité, haute ou basse. La priorité par
défaut est basse. Parmi les zones de basses priorités, les nouvelles
zones sont toujours affectées d’une priorité inférieure à celle des
zones précédentes.
Toutes les priorités fixées avec l’argument swapflags sont plus élevées
que la priorité par défaut. Elles peuvent prendre n’importe quelle
valeur positive ou nulle choisie par l’appelant. Plus la valeur est
haute, plus la priorité est élevée.
Les pages de swap sont allouées dans les zones par ordre décroissant de
priorité. Pour des zones de priorité différentes, la plus haute sera
toujours remplie entièrement avant d’utiliser la zone de priorité plus
faible. Si deux ou plus de zones ont la même priorité, et qu’il s’agit
de la plus haute priorité disponible, les pages sont allouées en
utilisant un algorithme Round-Robin entre elles.
Sur Linux 1.3.6, le noyau suit généralement ces règles, mais il y a
parfois des exceptions.
VALEUR RENVOYÉE
En cas de réussite, zéro est renvoyé, sinon -1 est renvoyé et errno
contient le code d’erreur.
ERREURS
EBUSY (pour swapon()) Le chemin path est déjà utilisé comme espace
d’échange.
EINVAL Le fichier path existe, mais ne référence ni un fichier
ordinaire, ni un périphérique en mode bloc. Ou bien, pour
swapon(), le fichier indiqué ne contient pas de signature de
swap correcte ou réside sur un système de fichiers en mémoire
comme tmpfs. Ou bien, pour swapoff(), path n’est pas
actuellement un espace d’échange.
ENFILE La limite du nombre total de fichiers ouverts sur le système a
été atteinte.
ENOENT path n’existe pas.
ENOMEM Pas assez de mémoire pour démarrer le swapping.
EPERM L’appelant n’a pas la capacité CAP_SYS_ADMIN, ou le nombre
maximum de fichiers d’échange est atteint ; voir la section
NOTES.
CONFORMITÉ
Ces fonctions sont spécifiques à Linux et ne doivent pas être employées
dans des programmes destinés à être portables. Le deuxième argument
swapflags a été introduit dans Linux 1.3.2.
NOTES
La partition ou le fichier doivent être préparés par mkswap(8).
Le nombre de fichiers d’échanges qui peuvent être utilisés est limité
par la constante MAX_SWAPFILES du noyau. Avant le noyau 2.4.10,
MAX_SWAPFILES valait 8 ; depuis Linux 2.4.10, il vaut 32. Depuis
2.6.18, cette limite est décrémentée de 2 (et vaut donc 30) si le noyau
est compilé avec l’option CONFIG_MIGRATION (qui réserve deux entrées de
table de swap pour les possibilités de migration offertes par mbind(2)
et migrate_pages(2)).
VOIR AUSSI
mkswap(8), swapoff(8), swapon(8)
COLOPHON
Cette page fait partie de la publication 3.23 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
Cette page de manuel a été traduite et mise à jour par Christophe
Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
disposition sur http://manpagesfr.free.fr/.
Les mises à jour et corrections de la version présente dans Debian sont
directement gérées par Julien Cristau <jcristau@debian.org> et l’équipe
francophone de traduction de Debian.
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> ».