int swapon(const char *path, int swapflags);
int swapoff(const char *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é, dans
swapflags,
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.
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.
Le nombre maximal de fichiers qui peuvent être utilisés est limité par la constante MAX_SWAPFILES du noyau. Avant le noyau 2.6.10, MAX_SWAPFILES valait 8 ; depuis le noyau 2.6.10, MAX_SWAPFILES vaut 32. Depuis le noyau 2.6.18, la limite a été diminué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 fonctionnalités de migration de pages offertes par mbind(2) et migrate_pages(2)).
Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 15 octobre 1996 et révisée le 23 juin 2008.
L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 2 swapon ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.
Dernière mise à jour : 23 juin 2008