Other Alias
swaponSINOPSIS
#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.