[Go to CFHT Home Page] Man Pages
Back to Software Index  BORDER=0Manpage Top Level
    swapctl(2) manual page Table of Contents

Name

swapctl - manage swap space

Synopsis


#include <sys/stat.h>
#include <sys/swap.h>

int swapctl(int cmd, void *arg);

Description

swapctl() adds, deletes, or returns information about swap resources. cmd specifies one of the following options contained in <sys/swap.h>:


    SC_ADD    /* add a resource for swapping */
    SC_LIST    /* list the resources for swapping */
    SC_REMOVE    /* remove a resource for swapping */
    SC_GETNSWP    /* return number of swap resources */

When SC_ADD or SC_REMOVE is specified, arg is a pointer to a swapres structure containing the following members:


    char    *sr_name;    /* pathname of resource */
    off_t    sr_start;    /* offset to start of swap area */
    off_t    sr_length;    /* length of swap area */

sr_start and sr_length are specified in 512-byte blocks.

When SC_LIST is specified, arg is a pointer to a swaptable structure containing the following members:


    int    swt_n;        /* number of swapents following */
    struct    swapent swt_ent[];    /* array of swt_n swapents */

A swapent structure contains the following members:


    char    *ste_path;    /* name of the swap file */
    off_t    ste_start;    /* starting block for swapping */
    off_t    ste_length;    /* length of swap area */
    long    ste_pages;    /* number of pages for swapping */
    long    ste_free;    /* number of ste_pages free */
    long    ste_flags;    /* ST_INDEL bit set if swap file */
                /* is now being deleted */

SC_LIST causes swapctl() to return at most swt_n entries. The return value of swapctl() is the number actually returned. The ST_INDEL bit is turned on in ste_flags if the swap file is in the process of being deleted.

When SC_GETNSWP is specified, swapctl() returns as its value the number of swap resources in use. arg is ignored for this operation.

The SC_ADD and SC_REMOVE functions will fail if calling process does not have appropriate privileges.

Return Values

Upon successful completion, the function swapctl() returns a value of 0 for SC_ADD or SC_REMOVE, the number of struct swapent entries actually returned for SC_LIST, or the number of swap resources in use for SC_GETNSWP. Upon failure, the function swapctl() returns a value of -1 and sets errno to indicate an error.

Errors

Under the following conditions, the function swapctl() fails and sets errno to:
EEXIST
Part of the range specified by sr_start and sr_length is already being used for swapping on the specified resource (SC_ADD).
EFAULT
arg, sr_name, or ste_path points to an illegal address.
EINVAL
The specified function value is not valid, the path specified is not a swap resource (SC_REMOVE), part of the range specified by sr_start and sr_length lies outside the resource specified (SC_ADD), or the specified swap area is less than one page (SC_ADD).
EISDIR
The path specified for SC_ADD is a directory.
ELOOP
Too many symbolic links were encountered in translating the pathname provided to SC_ADD or SC_REMOVE .
ENAMETOOLONG
The length of a component of the path specified for SC_ADD or SC_REMOVE exceeds {NAME_MAX} characters or the length of the path exceeds {PATH_MAX} characters and {_POSIX_NO_TRUNC} is in effect.
ENOENT
The pathname specified for SC_ADD or SC_REMOVE does not exist.
ENOMEM
An insufficient number of struct swapent structures were provided to SC_LIST, or there were insufficient system storage resources available during an SC_ADD or SC_REMOVE, or the system would not have enough swap space after an SC_REMOVE.
ENOSYS
The pathname specified for SC_ADD or SC_REMOVE is not a file or block special device.
ENOTDIR
Pathname provided to SC_ADD or SC_REMOVE contained a component in the path prefix that was not a directory.
EPERM
The effective user of the calling process is not super-user.
EROFS
The pathname specified for SC_ADD is a read-only file system.


Table of Contents