1 /*
2 +----------------------------------------------------------------------+
3 | PHP Version 7 |
4 +----------------------------------------------------------------------+
5 | Copyright (c) 1997-2016 The PHP Group |
6 +----------------------------------------------------------------------+
7 | This source file is subject to version 3.01 of the PHP license, |
8 | that is bundled with this package in the file LICENSE, and is |
9 | available through the world-wide-web at the following url: |
10 | http://www.php.net/license/3_01.txt |
11 | If you did not receive a copy of the PHP license and are unable to |
12 | obtain it through the world-wide-web, please send a note to |
13 | license@php.net so we can mail you a copy immediately. |
14 +----------------------------------------------------------------------+
15 | Authors: Kalle Sommer Nielsen <kalle@php.net> |
16 +----------------------------------------------------------------------+
17 */
18
19 #ifndef HAVE_GETRUSAGE_H
20 # define HAVE_GETRUSAGE_H
21
22 /*
23 * Note
24 *
25 * RUSAGE_CHILDREN is not implemented, and the RUSAGE_THREAD will
26 * therefore instead be used instead to emulate the behavior.
27 */
28
29 # define RUSAGE_SELF 0
30 # define RUSAGE_CHILDREN 1
31
32 # define RUSAGE_THREAD RUSAGE_CHILDREN
33
34 /*
35 * Implementation support
36 *
37 * RUSAGE_SELF
38 * ru_utime
39 * ru_stime
40 * ru_majflt
41 * ru_maxrss
42 *
43 * RUSAGE_THREAD
44 * ru_utime
45 * ru_stime
46 *
47 * Not implemented:
48 * ru_ixrss (unused)
49 * ru_idrss (unused)
50 * ru_isrss (unused)
51 * ru_minflt
52 * ru_nswap (unused)
53 * ru_inblock
54 * ru_oublock
55 * ru_msgsnd (unused)
56 * ru_msgrcv (unused)
57 * ru_nsignals (unused)
58 * ru_nvcsw
59 * ru_nivcsw
60 */
61
62 struct rusage
63 {
64 /* User time used */
65 struct timeval ru_utime;
66
67 /* System time used */
68 struct timeval ru_stime;
69
70 /* Integral max resident set size */
71 zend_long ru_maxrss;
72
73 /* Page faults */
74 zend_long ru_majflt;
75 #if 0
76 /* Integral shared text memory size */
77 zend_long ru_ixrss;
78
79 /* Integral unshared data size */
80 zend_long ru_idrss;
81
82 /* Integral unshared stack size */
83 zend_long ru_isrss;
84
85 /* Page reclaims */
86 zend_long ru_minflt;
87
88 /* Swaps */
89 zend_long ru_nswap;
90
91 /* Block input operations */
92 zend_long ru_inblock;
93
94 /* Block output operations */
95 zend_long ru_oublock;
96
97 /* Messages sent */
98 zend_long ru_msgsnd;
99
100 /* Messages received */
101 zend_long ru_msgrcv;
102
103 /* Signals received */
104 zend_long ru_nsignals;
105
106 /* Voluntary context switches */
107 zend_long ru_nvcsw;
108
109 /* Involuntary context switches */
110 zend_long ru_nivcsw;
111 #endif
112 };
113
114 PHPAPI int getrusage(int who, struct rusage *usage);
115
116 #endif
117