2004-11-03 13:51:07 +00:00
|
|
|
.\" Hey Emacs! This file is -*- nroff -*- source.
|
|
|
|
.\"
|
|
|
|
.\" Copyright (c) 1992 Drew Eckhardt (drew@cs.colorado.edu), March 28, 1992
|
|
|
|
.\"
|
|
|
|
.\" Permission is granted to make and distribute verbatim copies of this
|
|
|
|
.\" manual provided the copyright notice and this permission notice are
|
|
|
|
.\" preserved on all copies.
|
|
|
|
.\"
|
|
|
|
.\" Permission is granted to copy and distribute modified versions of this
|
|
|
|
.\" manual under the conditions for verbatim copying, provided that the
|
|
|
|
.\" entire resulting derived work is distributed under the terms of a
|
|
|
|
.\" permission notice identical to this one.
|
2007-04-12 22:42:49 +00:00
|
|
|
.\"
|
2004-11-03 13:51:07 +00:00
|
|
|
.\" Since the Linux kernel and libraries are constantly changing, this
|
|
|
|
.\" manual page may be incorrect or out-of-date. The author(s) assume no
|
|
|
|
.\" responsibility for errors or omissions, or for damages resulting from
|
|
|
|
.\" the use of the information contained herein. The author(s) may not
|
|
|
|
.\" have taken the same level of care in the production of this manual,
|
|
|
|
.\" which is licensed free of charge, as they might when working
|
|
|
|
.\" professionally.
|
2007-04-12 22:42:49 +00:00
|
|
|
.\"
|
2004-11-03 13:51:07 +00:00
|
|
|
.\" Formatted or processed versions of this manual, if unaccompanied by
|
|
|
|
.\" the source, must acknowledge the copyright and authors of this work.
|
|
|
|
.\"
|
|
|
|
.\" Modified by Michael Haardt <michael@moria.de>
|
|
|
|
.\" Modified 1993-07-24 by Rik Faith <faith@cs.unc.edu>
|
|
|
|
.\" Modified 1995-07-22 by Michael Chastain <mec@duracef.shout.net>
|
|
|
|
.\" Modified 1995-07-23 by aeb
|
|
|
|
.\" Modified 1996-10-22 by Eric S. Raymond <esr@thyrsus.com>
|
|
|
|
.\" Modified 1998-09-08 by aeb
|
2007-09-20 06:52:22 +00:00
|
|
|
.\" Modified 2004-06-17 by Michael Kerrisk <mtk.manpages@gmail.com>
|
2004-11-03 13:51:07 +00:00
|
|
|
.\" Modified 2004-10-10 by aeb
|
2004-12-15 13:37:09 +00:00
|
|
|
.\" 2004-12-14 mtk, Anand Kumria: added new errors
|
2007-06-16 18:22:38 +00:00
|
|
|
.\" 2007-06-22 Ivana Varekova <varekova@redhat.com>, mtk
|
|
|
|
.\" Update text describing limit on number of swap files.
|
2004-11-03 13:51:07 +00:00
|
|
|
.\"
|
2007-06-16 18:22:38 +00:00
|
|
|
.TH SWAPON 2 2007-06-22 "Linux" "Linux Programmer's Manual"
|
2004-11-03 13:51:07 +00:00
|
|
|
.SH NAME
|
|
|
|
swapon, swapoff \- start/stop swapping to file/device
|
|
|
|
.SH SYNOPSIS
|
|
|
|
.B #include <unistd.h>
|
|
|
|
.br
|
|
|
|
.B #include <asm/page.h> /* to find PAGE_SIZE */
|
|
|
|
.br
|
|
|
|
.B #include <sys/swap.h>
|
|
|
|
.sp
|
|
|
|
.BI "int swapon(const char *" path ", int " swapflags );
|
|
|
|
.br
|
|
|
|
.BI "int swapoff(const char *" path );
|
|
|
|
.SH DESCRIPTION
|
2004-12-15 13:37:09 +00:00
|
|
|
.BR swapon ()
|
2004-11-03 13:51:07 +00:00
|
|
|
sets the swap area to the file or block device specified by
|
|
|
|
.IR path .
|
2004-12-15 13:37:09 +00:00
|
|
|
.BR swapoff ()
|
2004-11-03 13:51:07 +00:00
|
|
|
stops swapping to the file or block device specified by
|
|
|
|
.IR path .
|
|
|
|
.PP
|
2004-12-15 13:37:09 +00:00
|
|
|
.BR swapon ()
|
2004-11-03 13:51:07 +00:00
|
|
|
takes a
|
|
|
|
.I swapflags
|
|
|
|
argument.
|
|
|
|
If
|
|
|
|
.I swapflags
|
|
|
|
has the
|
2007-06-20 22:20:03 +00:00
|
|
|
.B SWAP_FLAG_PREFER
|
2004-11-03 13:51:07 +00:00
|
|
|
bit turned on, the new swap area will have a higher priority than default.
|
2004-12-15 13:37:09 +00:00
|
|
|
The priority is encoded within
|
|
|
|
.I swapflags
|
|
|
|
as:
|
2004-11-03 13:51:07 +00:00
|
|
|
.br
|
|
|
|
.sp
|
|
|
|
.I " (prio << SWAP_FLAG_PRIO_SHIFT) & SWAP_FLAG_PRIO_MASK"
|
|
|
|
.br
|
|
|
|
.PP
|
|
|
|
These functions may only be used by a privileged process (one having the
|
|
|
|
.B CAP_SYS_ADMIN
|
|
|
|
capability).
|
2007-05-16 02:25:26 +00:00
|
|
|
.SS Priority
|
2004-11-03 13:51:07 +00:00
|
|
|
Each swap area has a priority, either high or low.
|
|
|
|
The default priority is low.
|
|
|
|
Within the low-priority areas,
|
|
|
|
newer areas are even lower priority than older areas.
|
|
|
|
.PP
|
|
|
|
All priorities set with
|
|
|
|
.I swapflags
|
|
|
|
are high-priority, higher than default.
|
|
|
|
They may have any non-negative value chosen by the caller.
|
|
|
|
Higher numbers mean higher priority.
|
|
|
|
.PP
|
|
|
|
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.
|
|
|
|
.PP
|
|
|
|
As of Linux 1.3.6, the kernel usually follows these rules,
|
|
|
|
but there are exceptions.
|
|
|
|
.SH "RETURN VALUE"
|
2007-04-12 22:42:49 +00:00
|
|
|
On success, zero is returned.
|
|
|
|
On error, \-1 is returned, and
|
2004-11-03 13:51:07 +00:00
|
|
|
.I errno
|
|
|
|
is set appropriately.
|
|
|
|
.SH ERRORS
|
|
|
|
.TP
|
2004-12-15 13:24:42 +00:00
|
|
|
.B EBUSY
|
2007-04-12 22:42:49 +00:00
|
|
|
(for
|
2005-09-19 12:18:57 +00:00
|
|
|
.BR swapon ())
|
2004-12-15 13:24:42 +00:00
|
|
|
The specified
|
|
|
|
.I path
|
|
|
|
is already being used as a swap area.
|
|
|
|
.TP
|
2004-11-03 13:51:07 +00:00
|
|
|
.B EINVAL
|
|
|
|
The file
|
|
|
|
.I path
|
2004-12-15 13:24:42 +00:00
|
|
|
exists, but refers neither to a regular file nor to a block device;
|
2004-12-15 13:37:09 +00:00
|
|
|
or, for
|
|
|
|
.BR swapon (),
|
2007-08-10 09:12:11 +00:00
|
|
|
the indicated path does not contain a valid swap signature or
|
|
|
|
resides on an in-memory filesystem like tmpfs; or, for
|
2004-12-15 13:37:09 +00:00
|
|
|
.BR swapoff (),
|
|
|
|
.I path
|
|
|
|
is not currently a swap area.
|
2004-11-03 13:51:07 +00:00
|
|
|
.TP
|
|
|
|
.B ENFILE
|
|
|
|
The system limit on the total number of open files has been reached.
|
|
|
|
.TP
|
|
|
|
.B ENOENT
|
|
|
|
The file
|
2007-04-12 22:42:49 +00:00
|
|
|
.I path
|
2004-11-03 13:51:07 +00:00
|
|
|
does not exist.
|
|
|
|
.TP
|
|
|
|
.B ENOMEM
|
|
|
|
The system has insufficient memory to start swapping.
|
|
|
|
.TP
|
|
|
|
.B EPERM
|
|
|
|
The caller does not have the
|
|
|
|
.B CAP_SYS_ADMIN
|
2007-06-21 22:55:04 +00:00
|
|
|
capability.
|
2007-06-16 18:22:38 +00:00
|
|
|
Alternatively, the maximum number of swap files are already in use;
|
|
|
|
see NOTES below.
|
2004-11-03 13:51:07 +00:00
|
|
|
.SH "CONFORMING TO"
|
|
|
|
These functions are Linux specific and should not be used in programs
|
|
|
|
intended to be portable.
|
2004-12-15 13:37:09 +00:00
|
|
|
The second
|
|
|
|
.I swapflags
|
|
|
|
argument was introduced in Linux 1.3.2.
|
2004-11-03 13:51:07 +00:00
|
|
|
.SH NOTES
|
|
|
|
The partition or path must be prepared with
|
|
|
|
.BR mkswap (8).
|
2007-06-16 18:22:38 +00:00
|
|
|
|
|
|
|
There is an upper limit on the number of swap files that may be used,
|
2007-06-22 19:42:52 +00:00
|
|
|
defined by the kernel constant MAX_SWAPFILES.
|
2007-06-16 18:22:38 +00:00
|
|
|
Before kernel 2.6.10, MAX_SWAPFILES has the value 8;
|
|
|
|
since kernel 2.6.10, it has the value 32.
|
|
|
|
Since kernel 2.6.18, the limit is decreased by 2 (thus: 30)
|
2007-06-22 19:42:52 +00:00
|
|
|
if the kernel is built with the
|
|
|
|
.B CONFIG_MIGRATION
|
|
|
|
option
|
2007-06-16 18:22:38 +00:00
|
|
|
(which reserves two swap table entries for the page migration features of
|
|
|
|
.BR mbind (2)
|
|
|
|
and
|
|
|
|
.BR migrate_pages (2)).
|
2004-11-03 13:51:07 +00:00
|
|
|
.SH "SEE ALSO"
|
|
|
|
.BR mkswap (8),
|
|
|
|
.BR swapoff (8),
|
|
|
|
.BR swapon (8)
|