.\" Copyright (c) 1985, 1991 The Regents of the University of California. .\" All rights reserved. .\" .\" %sccs.include.redist.man% .\" .\" @(#)getrusage.2 6.9 (Berkeley) 03/10/91 .\" .Dd .Dt GETRUSAGE 2 .Os BSD 4 .Sh NAME .Nm getrusage .Nd get information about resource utilization .Sh SYNOPSIS .Fd #include .Fd #include .Fd #define RUSAGE_SELF 0 .Fd #define RUSAGE_CHILDREN -1 .Ft int .Fn getrusage "int who" "struct rusage *rusage" .Sh DESCRIPTION .Fn Getrusage returns information describing the resources utilized by the current process, or all its terminated child processes. The .Fa who parameter is either .Dv RUSAGE_SELF or .Dv RUSAGE_CHILDREN . The buffer to which .Fa rusage points will be filled in with the following structure: .Bd -literal struct rusage { struct timeval ru_utime; /* user time used */ struct timeval ru_stime; /* system time used */ long ru_maxrss; /* integral 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 */ }; .Ed .Pp The fields are interpreted as follows: .Bl -tag -width ru_minfltaa .It Fa ru_utime the total amount of time spent executing in user mode. .It Fa ru_stime the total amount of time spent in the system executing on behalf of the process(es). .It Fa ru_maxrss the maximum resident set size utilized (in kilobytes). .It Fa ru_ixrss an \*(lqintegral\*(rq 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. .It Fa ru_idrss an integral value of the amount of unshared memory residing in the data segment of a process (expressed in units of kilobytes * ticks-of-execution). .It Fa ru_isrss an integral value of the amount of unshared memory residing in the stack segment of a process (expressed in units of kilobytes * ticks-of-execution). .It Fa ru_minflt the number of page faults serviced without any I/O activity; here I/O activity is avoided by \*(lqreclaiming\*(rq a page frame from the list of pages awaiting reallocation. .It Fa ru_majflt the number of page faults serviced that required I/O activity. .It Fa ru_nswap the number of times a process was \*(lqswapped\*(rq out of main memory. .It Fa ru_inblock the number of times the file system had to perform input. .It Fa ru_oublock the number of times the file system had to perform output. .It Fa ru_msgsnd the number of IPC messages sent. .It Fa ru_msgrcv the number of IPC messages received. .It Fa ru_nsignals the number of signals delivered. .It Fa ru_nvcsw the number of times a context switch resulted due to a process voluntarily giving up the processor before its time slice was completed (usually to await availability of a resource). .It Fa 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. .El .Sh NOTES The numbers .Fa ru_inblock and .Fa 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. .Sh ERRORS .Fn Getrusage returns -1 on error. The possible errors are: .Bl -tag -width Er .It Bq Er EINVAL The .Fa who parameter is not a valid value. .It Bq Er EFAULT The address specified by the .Fa rusage parameter is not in a valid part of the process address space. .El .Sh SEE ALSO .Xr gettimeofday 2 , .Xr wait 2 .Sh BUGS There is no way to obtain information about a child process that has not yet terminated. .Sh HISTORY The .Nm function call appeared in .Bx 4.2 .