1 
2 #ifndef _GETRUSAGE_H
3 #define _GETRUSAGE_H
4 
5 #if defined(__cplusplus)
6 extern "C"
7 {
8 #endif
9 
10 #define ENODATA         61
11 #define	RUSAGE_SELF	     0
12 #define	RUSAGE_CHILDREN	-1
13 
14 typedef struct
15 {
16     long            tv_sec;
17     long            tv_usec;
18 } timeval;
19 
20 typedef struct rusage
21 {
22     timeval  ru_utime;   /* user time used                      */
23     timeval  ru_stime;   /* system time used                    */
24     long     ru_maxrss;  /* integral max resident set size      */
25     long     ru_ixrss;   /* integral shared text memory size    */
26     long     ru_idrss;   /* integral unshared data size         */
27     long     ru_isrss;   /* integral unshared stack size        */
28     long     ru_minflt;  /* page reclaims                       */
29     long     ru_majflt;  /* page faults                         */
30     long     ru_nswap;   /* swaps                               */
31     long     ru_inblock; /* block input operations              */
32     long     ru_oublock; /* block output operations             */
33     long     ru_msgsnd;  /* messages sent                       */
34     long     ru_msgrcv;  /* messages received                   */
35     long     ru_nsignals;/* signals received                    */
36     long     ru_nvcsw;   /* voluntary context switches          */
37     long     ru_nivcsw;  /* involuntary context switches        */
38 } rusage;
39 
40 int getrusage(int who, rusage *usage);
41 
42 #if defined(__cplusplus)
43 }
44 #endif
45 
46 #endif
47