swapctl man page on SunOS

Man page or keyword search:  
man Server   20652 pages
apropos Keyword Search (all sections)
Output format
SunOS logo
[printable version]

swapctl(2)			 System Calls			    swapctl(2)

NAME
       swapctl - manage swap space

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

       int swapctl(int cmd, void *arg);

DESCRIPTION
       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.

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		       Either  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	 char‐
			       acters  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 struc‐
			       tures  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  con‐
			       tained  a component in the path prefix that was
			       not a directory.

       EPERM		       The {PRIV_SYS_MOUNT} was not  asserted  in  the
			       effective set of the calling process.

       EROFS		       The  pathname  specified	 for SC_ADD is a read-
			       only file system.

       Additionally, the swapctl() function will fail  for  32-bit  interfaces
       if:

       EOVERFLOW	       The  amount  of	swap  space  configured on the
			       machine is too large to	be  represented	 by  a
			       32-bit quantity.

EXAMPLES
       Example 1: The usage of the SC_GETNSWP and SC_LIST commands.

       The  following  example	demonstrates  the  usage of the SC_GETNSWP and
       SC_LIST commands.

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

       #define MAXSTRSIZE 80

       main(argc, argv)
	   int		  argc;
	   char		  *argv[];
       {
	   swaptbl_t	  *s;
	   int		  i, n, num;
	   char		  *strtab;    /* string table for path names */

       again:
	   if ((num = swapctl(SC_GETNSWP, 0)) == -1) {
	       perror("swapctl: GETNSWP");
	       exit(1);
	   }
	   if (num == 0) {
	       fprintf(stderr, "No Swap Devices Configured\n");
	       exit(2);
	   }
	   /* allocate swaptable for num+1 entries */
	   if ((s = (swaptbl_t *)
	       malloc(num * sizeof(swapent_t) +
		   sizeof(struct swaptable))) ==
	       (void *) 0) {
	       fprintf(stderr, "Malloc Failed\n");
	       exit(3);
	   }
	   /* allocate num+1 string holders */
	   if ((strtab = (char *)
	       malloc((num + 1) * MAXSTRSIZE)) == (void *) 0) {
	       fprintf(stderr, "Malloc Failed\n");
	       exit(3);
	   }
	   /* initialize string pointers */
	   for (i = 0; i < (num + 1); i++) {
	       s->swt_ent[i].ste_path = strtab + (i * MAXSTRSIZE);
	   }

	   s->swt_n = num + 1;
	   if ((n = swapctl(SC_LIST, s)) < 0) {
	       perror("swapctl");
	       exit(1);
	   }
	   if (n > num) {	 /* more were added */
	       free(s);
	       free(strtab);
	       goto again;
	   }
	   for (i = 0; i < n; i++)
	       printf("%s %ld\n",
		   s->swt_ent[i].ste_path, s->swt_ent[i].ste_pages);
       }

SEE ALSO
       privileges(5)

SunOS 5.10			  25 Sep 1997			    swapctl(2)
[top]

List of man pages available for SunOS

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net