SWAPON(2)

이름
swapon, swapoff - 파일/디바이스로 스와핑 시작/끝내기

사용법
#include <unistd.h>
#include <asm/page.h> /* to find PAGE_SIZE */
#include <sys/swap.h>

int swapon(const char *path, int swapflags);
int swapoff(const char *path);

설명
swapon 은 파일 혹은 path 로 분류되는 블록 디바이스로의 스왑 영역을 설정한다. swapoff 파일이나 혹은 path. 로 분류되는 블록 디바이스로의 스와핑을 멈춘다.

swapon 은 swapflags 독립변수를 가진다. 만약 swapflags 가 켜진 SWAP_FLAG_PREFER 비트를 가지면, 새로운 스왑 영역이 디폴트 보다 더 높은 우선권을 가진다. 선행권은 아래와 같이 인코딩된다:

(prio << SWAP_FLAG_PRIO_SHIFT) & SWAP_FLAG_PRIO_MASK

이러한 함수는 슈퍼 유저만이 사용할 수 있다.

PRIORITY
각각의 스왑 영역은 높던 낮던 우선권을 가지고 있다. 디폴트는 '낮음'이다. 낮은 우선권 영역에서 새 영역은 이전 영역보다 낮은 우선권을 갖는다.

swapflags 으로 설정된 모든 우선권은 상위 우선권이다. 그들은 호출자에 의해 골라진 음수가 아닌 값을 갖는다. 높은 번호는 높은 우선권을 말한다.

스왑 페이지는 우선권 순서대로 영역으로부터 할당된다, 제일 높은 우선권이 처음. 서로 다른 우선권을 가지고 있기 때문에, 낮은 우선권 영역을 쓰기 전에 높은 우선권 영역은 고갈된다. 두개 이상의 영역이 같은 우선권을 가지고 있고, 제일 높은 우선권이 가능하다면, 페이지는 그들 사이의 round-robin basis에 할당된다.

리눅스 1.3.6의 경우와 같이 커널은 이 법칙을 따른다, 하지만 예외는 있다.

반환값
성공시 0이 반환되고, 에러시 -1이 반환된다. errno 은 적절히 설정된다.

에러
Many other errors can occur if path 가 효력이 없으면, 많은 다른 에러들이 생길 수 있다.

EPERM
    사용자가 슈퍼유저가 아니다 혹은 MAX_SWAPFILES (defined to be 8 in Linux 1.3.6) 이상이 사용되고 있다.

EINVAL
    는 path 가 존재하지만 정규 경로나 블록 디바이스가 없는 경우 반환된다.

ENOENT
    는 path 가 없을 때 반환된다.

ENOMEM
    는 스와핑을 하기에 충분치 못한 메모리밖에 없을 때 반환된다.

호환
이 함수는 리눅스에서 특화되었다. 이식을 목적으로 하는 프로그램에서는 사용해서는 안된다. 두번쨰 `swapflags' 독립변수는 리눅스 1.3.2에서 소개되었다.

주의
The partition or path must be prepared with mkswap(8).

관련 항목
mkswap(8), swapon(8), swapoff(8)