NOMBRE
swapon, swapoff − arranca/para el intercambio al fichero/dispositivo
SINOPSIS
#include
<unistd.h>
#include <asm/page.h> /* para encontrar PAGE_SIZE */
#include <sys/swap.h>
int
swapon(const char *camino, int
swapflags);
int swapoff(const char *camino);
DESCRIPCIÓN
swapon establece como área de trasiego el fichero o dispositivo de bloques especificado por camino. swapoff para el trasiego al fichero o dispositivo de bloque especificado por camino.
swapon toma un argumento swapflags. Si swapflags tiene el bit SWAP_FLAG_PREFER activado, la nueva área de trasiego tendrá una prioridad más alta que la predeterminada. La prioridad se codifica como:
(prio << SWAP_FLAG_PRIO_SHIFT) & SWAP_FLAG_PRIO_MASK
Estas funciones sólo pueden ser empleadas por el súper-usuario.
PRIORIDAD
Cada área de trasiego tiene una prioridad, alta o baja. La prioridad predeterminada es la baja. Dentro de las áreas de baja prioridad, las áreas nuevas tienen prioridad aún más baja que las áreas antiguas.
Todas las prioridades puestas con swapflags son de alta prioridad, más alta que la predeterminada. Peden tener cualquier valor no negativo escogido por el que llama a la función. Números más altos significan prioridades mayores.
Las páginas de trasiego se cogen de las áreas en orden de prioridad, primero las de mayor prioridad. Para áreas con prioridades diferentes, un área de prioridad más alta se gasta por completo antes de emplear una de prioridad más baja. Si dos o más áreas tienen la misma prioridad, y es la más alta disponible, las páginas se asignan según un algoritmo de asignación en rueda entre ellas.
En Linux 1.3.6, el núcleo seguía usualmente estas reglas, pero había excepciones.
VALOR DEVUELTO
En caso de éxito, se devuelve 0. En caso de error, se devuelve −1 y se pone en errno un valor apropiado.
ERRORES
Muchos otros errores pueden ocurrir si camino no es válido.
EPERM |
El usuario no es el súper-usuario, o están en uso más de MAX_SWAPFILES (definido como 8 en Linux 1.3.6) áreas de trasiego. | ||
EINVAL |
se devuelve si camino existe, pero no es ni un camino de fichero regular ni un dispositivo de bloques. | ||
ENOENT |
se devuelve si camino no existe. | ||
ENOMEM |
se devuelve si no hay bastante memoria como para iniciar el trasiego. |
CONFORME A
Estas funciones son específicas de Linux y no deberían emplearse en programas supuestamente transportables. El segundo argumento, ’swapflags’, fue introducido en Linux 1.3.2.
OBSERVACIONES
La partición o camino debe ser preparada con mkswap(8).