NAME

     getrlimit, getrusage, setrlimit -  get/set  resource  limits
     and usage


SYNOPSIS

     #include <sys/time.h>
     #include <sys/resource.h>
     #include <unistd.h>

     int getrlimit (int resource, struct rlimit *rlim));
     int getrusage (int who, struct rusage *usage));
     int setrlimit (int resource, const struct rlimit *rlim));


DESCRIPTION

     getrlimit and setrlimit get and set resource limits  respec-
     tively. resource should be one of:

     RLIMIT_CPU     /* CPU time in seconds */
     RLIMIT_FSIZE   /* Maximum filesize */
     RLIMIT_DATA    /* max data size */
     RLIMIT_STACK   /* max stack size */
     RLIMIT_CORE    /* max core file size */
     RLIMIT_RSS     /* max resident set size */
     RLIMIT_NPROC   /* max number of processes */
     RLIMIT_NOFILE  /* max number of open files */
     RLIMIT_MEMLOCK /* max locked-in-memory address space*/

     A  resource  may  unlimited  if  you  set   the   limit   to
     RLIM_INFINITY.    RLIMIT_OFILE   is   the   BSD   name   for
     RLIMIT_NOFILE.

     The rlimit structure is defined as follows :

          struct rlimit
          {
               int  rlim_cur;
               int  rlim_max;
          };

     getrusage returns the current resource usages, for a who  of
     either RUSAGE_SELF or RUSAGE_CHILDREN.

          struct rusage
          {
               struct timeval ru_utime; /* user time used */
               struct timeval ru_stime; /* system time used */
               long ru_maxrss;          /* maximum resident set size */
               long ru_ixrss;      /* integral shared memory size */
               long ru_idrss;      /* integral unshared data size */
               long ru_isrss;      /* integral unshared stack size */
               long ru_minflt;          /* page reclaims */
               long ru_majflt;          /* page faults */
               long ru_nswap;      /* swaps */
               long ru_inblock;         /* block input operations */
               long ru_oublock;         /* block output operations */
               long ru_msgsnd;          /* messages sent */
               long ru_msgrcv;          /* messages received */
               long ru_nsignals;        /* signals received */
               long ru_nvcsw;      /* voluntary context switches */
               long ru_nivcsw;          /* involuntary context switches */
          };


RETURN VALUE

     On success, zero is returned.  On error, -1 is returned, and
     errno is set appropriately.


ERRORS

     EFAULT
          rlim or usage points  outside  the  accessible  address
          space.

     EINVAL
          getrlimit or setrlimit is called with a  bad  resource,
          or getrusage is called with a bad who.

     EPERM
          A non-superuser tries to use  setrlimit()  to  increase
          the soft or hard limit above the current hard limit, or
          a superuser tries to increase RLIMIT_NOFILE  above  the
          current kernel maximum.


CONFORMING TO

     SVr4, BSD 4.3


SEE ALSO

     ulimit(2), quotactl(2)