The swapctl() function 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 */
|
The sr_start and sr_length members are specified in 512-byte blocks. A swap resource can only be removed by specifying the same values for the sr_start and sr_length members as were specified when it was added. Swap resources need not be removed in the order in which they were added.
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 */
|
The SC_LIST function 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.
|