swapon(2) arranca/para el intercambio al fichero/dispositivo

Other Alias

swapoff

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