swapon
, swapoff
—
control devices for interleaved paging/swapping
Standard C Library (libc, -lc)
#include <unistd.h>
int
swapon
(const
char *special);
int
swapoff
(const
char *special, u_int
flags);
The swapon
() system call makes the block device
special available to the system for allocation for
paging and swapping. The names of potentially available devices are known to
the system and defined at system configuration time. The size of the swap area
on special is calculated at the time the device is first
made available for swapping.
The swapoff
() system call disables paging
and swapping on the given device. All associated swap metadata are
deallocated, and the device is made available for other purposes.
The special argument points to the name of
the device or file used for swapping. flags argument
takes the following flags:
SWAPOFF_FORCE
- Overrides a very conservative check that prevents swapoff if the total
amount of free memory and remaining swap devices space might be
unsufficient for the system to continue operating.
If an error has occurred, a value of -1 is returned and
errno is set to indicate the error.
Both swapon
() and swapoff
() can
fail if:
- [
ENOTDIR
]
- A component of the path prefix is not a directory.
- [
ENAMETOOLONG
]
- A component of a pathname exceeded 255 characters, or an entire path name
exceeded 1023 characters.
- [
ENOENT
]
- The named device does not exist.
- [
EACCES
]
- Search permission is denied for a component of the path prefix.
- [
ELOOP
]
- Too many symbolic links were encountered in translating the pathname.
- [
EPERM
]
- The caller is not the super-user.
- [
EFAULT
]
- The special argument points outside the process's
allocated address space.
Additionally, swapon
() can fail for the
following reasons:
- [
ENOTBLK
]
- The special argument is not a block device.
- [
EBUSY
]
- The device specified by special has already been
made available for swapping
- [
ENXIO
]
- The major device number of special is out of range
(this indicates no device driver exists for the associated hardware).
- [
EIO
]
- An I/O error occurred while opening the swap device.
- [
EINTEGRITY
]
- Corrupted data was detected while reading from the file system to open the
swap device.
Lastly, swapoff
() can fail if:
- [
EINVAL
]
- The system is not currently swapping to
special.
- [
ENOMEM
]
- Not enough virtual memory is available to safely disable paging and
swapping to the given device.
The swapon
() system call appeared in
4.0BSD. The swapoff
() system
call appeared in FreeBSD 5.0.