Copyright © tutorialspoint.com
int swapon(const char *path, int swapflags);
int swapoff(const char *path);
swapon() takes a swapflags argument. If swapflags has the SWAP_FLAG_PREFER bit turned on, the new swap area will have a higher priority than default. The priority is encoded within swapflags as:
(prio << SWAP_FLAG_PRIO_SHIFT) & SWAP_FLAG_PRIO_MASK
These functions may only be used by a privileged process (one having the CAP_SYS_ADMIN capability).
All priorities set with swapflags are high-priority, higher than default. They may have any non-negative value chosen by the caller. Higher numbers mean higher priority.
Swap pages are allocated from areas in priority order, highest priority first. For areas with different priorities, a higher-priority area is exhausted before using a lower-priority area. If two or more areas have the same priority, and it is the highest priority available, pages are allocated on a round-robin basis between them.
As of Linux 1.3.6, the kernel usually follows these rules, but there are exceptions.
Tag | Description |
---|---|
EBUSY | (for swapon()) The specified path is already being used as a swap area. |
EINVAL | The file path exists, but refers neither to a regular file nor to a block device; or, for swapon(), the indicated path does not contain a valid swap signature; or, for swapoff(), path is not currently a swap area. |
ENFILE | The system limit on the total number of open files has been reached. |
ENOENT | The file path does not exist. |
ENOMEM | The system has insufficient memory to start swapping. |
EPERM | The caller does not have the CAP_SYS_ADMIN capability or the maximal number of swap files has been reached. (The maximum is MAX_SWAPFILES-2(30) if CONFIG_MIGRATION is enabled, MAX_SWAPFILES (32) otherwise. In Linux kernel versions prior to 2.4.10, the maximum was always MAX_SWAPFILES, which was 8. |
Copyright © tutorialspoint.com