MirOS Manual: getrusage(2)

GETRUSAGE(2)               BSD Programmer's Manual                GETRUSAGE(2)

NAME

     getrusage - get information about resource utilization

SYNOPSIS

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

     #define RUSAGE_SELF      0
     #define RUSAGE_CHILDREN  -1

     int
     getrusage(int who, struct rusage *rusage);

DESCRIPTION

     getrusage() returns information describing the resources utilized by the
     current process, or all its terminated child processes. The who parameter
     is either RUSAGE_SELF or RUSAGE_CHILDREN. The buffer to which rusage
     points will be filled in with the following structure:

     struct rusage {
             struct timeval ru_utime; /* user time used */
             struct timeval ru_stime; /* system time used */
             long ru_maxrss;          /* max resident set size */
             long ru_ixrss;           /* integral shared text 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 */
     };

     The fields are interpreted as follows:

     ru_utime     the total amount of time spent executing in user mode.

     ru_stime     the total amount of time spent in the system executing on
                  behalf of the process(es).

     ru_maxrss    the maximum resident set size utilized (in kilobytes).

     ru_ixrss     an integral value indicating the amount of memory used by
                  the text segment that was also shared among other processes.
                  This value is expressed in units of kilobytes * ticks-of-
                  execution.

     ru_idrss     an integral value of the amount of unshared memory residing
                  in the data segment of a process (expressed in units of ki-
                  lobytes * ticks-of-execution).

     ru_isrss     an integral value of the amount of unshared memory residing
                  in the stack segment of a process (expressed in units of ki-
                  lobytes * ticks-of-execution).

     ru_minflt    the number of page faults serviced without any I/O activity;
                  here I/O activity is avoided by reclaiming a page frame from
                  the list of pages awaiting reallocation.

     ru_majflt    the number of page faults serviced that required I/O activi-
                  ty.

     ru_nswap     the number of times a process was swapped out of main
                  memory.

     ru_inblock   the number of times the file system had to perform input.

     ru_oublock   the number of times the file system had to perform output.

     ru_msgsnd    the number of IPC messages sent.

     ru_msgrcv    the number of IPC messages received.

     ru_nsignals  the number of signals delivered.

     ru_nvcsw     the number of times a context switch resulted due to a pro-
                  cess voluntarily giving up the processor before its time
                  slice was completed (usually to await availability of a
                  resource).

     ru_nivcsw    the number of times a context switch resulted due to a
                  higher priority process becoming runnable or because the
                  current process exceeded its time slice.

NOTES

     The numbers ru_inblock and ru_oublock account only for real I/O; data
     supplied by the caching mechanism is charged only to the first process to
     read or write the data.

RETURN VALUES

     Upon success, a value of zero is returned. Otherwise, -1 is returned and
     errno is set to indicate the error.

ERRORS

     getrusage() will fail if:

     [EINVAL]      The who parameter is not a valid value.

     [EFAULT]      The address specified by the rusage parameter is not in a
                   valid part of the process address space.

SEE ALSO

     gettimeofday(2), wait(2)

HISTORY

     The getrusage() function call appeared in 4.2BSD.

BUGS

     There is no way to obtain information about a child process that has not
     yet terminated.

MirOS BSD #10-current            June 4, 1993                                1

Generated on 2014-07-04 21:17:45 by $MirOS: src/scripts/roff2htm,v 1.79 2014/02/10 00:36:11 tg Exp $

These manual pages and other documentation are copyrighted by their respective writers; their source is available at our CVSweb, AnonCVS, and other mirrors. The rest is Copyright © 2002‒2014 The MirOS Project, Germany.
This product includes material provided by Thorsten Glaser.

This manual page’s HTML representation is supposed to be valid XHTML/1.1; if not, please send a bug report – diffs preferred.