annotate src/DLD-FUNCTIONS/getrusage.cc @ 8319:c374691576f6

Fix for MSVC compilation
author Michael Goffioul <michael.goffioul@gmail.com>
date Wed, 12 Nov 2008 21:36:39 +0000
parents a1dbe9d80eee
children eb63fbe60fab
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
1 /*
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
2
7017
a1dbe9d80eee [project @ 2007-10-12 21:27:11 by jwe]
jwe
parents: 7016
diff changeset
3 Copyright (C) 1996, 1997, 1998, 1999, 2002, 2003, 2005, 2006, 2007
a1dbe9d80eee [project @ 2007-10-12 21:27:11 by jwe]
jwe
parents: 7016
diff changeset
4 John W. Eaton
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
5
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
6 This file is part of Octave.
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
7
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
8 Octave is free software; you can redistribute it and/or modify it
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
9 under the terms of the GNU General Public License as published by the
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6360
diff changeset
10 Free Software Foundation; either version 3 of the License, or (at your
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6360
diff changeset
11 option) any later version.
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
12
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
13 Octave is distributed in the hope that it will be useful, but WITHOUT
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
16 for more details.
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
17
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
18 You should have received a copy of the GNU General Public License
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6360
diff changeset
19 along with Octave; see the file COPYING. If not, see
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6360
diff changeset
20 <http://www.gnu.org/licenses/>.
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
21
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
22 */
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
23
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
24 #ifdef HAVE_CONFIG_H
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
25 #include <config.h>
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
26 #endif
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
27
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
28 #include "systime.h"
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
29
3176
fccab8e7d35f [project @ 1998-05-18 20:33:31 by jwe]
jwe
parents: 3014
diff changeset
30 #ifdef HAVE_SYS_TYPES_H
fccab8e7d35f [project @ 1998-05-18 20:33:31 by jwe]
jwe
parents: 3014
diff changeset
31 #include <sys/types.h>
fccab8e7d35f [project @ 1998-05-18 20:33:31 by jwe]
jwe
parents: 3014
diff changeset
32 #endif
fccab8e7d35f [project @ 1998-05-18 20:33:31 by jwe]
jwe
parents: 3014
diff changeset
33
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
34 #ifdef HAVE_SYS_RESOURCE_H
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
35 #include <sys/resource.h>
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
36 #endif
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
37
6237
4a8c7f586ec4 [project @ 2007-01-10 19:20:09 by jwe]
jwe
parents: 5828
diff changeset
38 #if defined (__WIN32__)
5698
e33aff8ba378 [project @ 2006-03-21 16:36:58 by dbateman]
dbateman
parents: 5307
diff changeset
39 #include <windows.h>
6360
6f3902d56db8 [project @ 2007-02-26 21:08:49 by jwe]
jwe
parents: 6237
diff changeset
40 #ifdef min
6f3902d56db8 [project @ 2007-02-26 21:08:49 by jwe]
jwe
parents: 6237
diff changeset
41 #undef min
8319
c374691576f6 Fix for MSVC compilation
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7017
diff changeset
42 #undef max
6360
6f3902d56db8 [project @ 2007-02-26 21:08:49 by jwe]
jwe
parents: 6237
diff changeset
43 #endif
5698
e33aff8ba378 [project @ 2006-03-21 16:36:58 by dbateman]
dbateman
parents: 5307
diff changeset
44 #endif
e33aff8ba378 [project @ 2006-03-21 16:36:58 by dbateman]
dbateman
parents: 5307
diff changeset
45
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
46 #if defined (HAVE_TIMES) && defined (HAVE_SYS_TIMES_H)
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
47
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
48 #if defined (HAVE_SYS_PARAM_H)
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
49 #include <sys/param.h>
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
50 #endif
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
51 #include <sys/times.h>
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
52
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
53 #if !defined (HZ)
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
54 #if defined (CLK_TCK)
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
55 #define HZ CLK_TCK
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
56 #elif defined (USG)
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
57 #define HZ 100
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
58 #else
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
59 #define HZ 60
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
60 #endif
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
61 #endif
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
62
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
63 #endif
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
64
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
65 #include "defun-dld.h"
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
66 #include "oct-map.h"
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
67 #include "sysdep.h"
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
68 #include "ov.h"
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
69 #include "oct-obj.h"
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
70 #include "utils.h"
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
71
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
72 #ifndef RUSAGE_SELF
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
73 #define RUSAGE_SELF 0
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
74 #endif
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
75
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
76 // System resource functions.
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
77
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
78 DEFUN_DLD (getrusage, , ,
3301
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
79 "-*- texinfo -*-\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
80 @deftypefn {Loadable Function} {} getrusage ()\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
81 Return a structure containing a number of statistics about the current\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
82 Octave process. Not all fields are available on all systems. If it is\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
83 not possible to get CPU time statistics, the CPU time slots are set to\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
84 zero. Other missing data are replaced by NaN. Here is a list of all\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
85 the possible fields that can be present in the structure returned by\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
86 @code{getrusage}:\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
87 \n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
88 @table @code\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
89 @item idrss\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
90 Unshared data size.\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
91 \n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
92 @item inblock\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
93 Number of block input operations.\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
94 \n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
95 @item isrss\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
96 Unshared stack size.\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
97 \n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
98 @item ixrss\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
99 Shared memory size.\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
100 \n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
101 @item majflt\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
102 Number of major page faults.\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
103 \n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
104 @item maxrss\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
105 Maximum data size.\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
106 \n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
107 @item minflt\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
108 Number of minor page faults.\n\
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
109 \n\
3301
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
110 @item msgrcv\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
111 Number of messages received.\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
112 \n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
113 @item msgsnd\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
114 Number of messages sent.\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
115 \n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
116 @item nivcsw\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
117 Number of involuntary context switches.\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
118 \n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
119 @item nsignals\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
120 Number of signals received.\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
121 \n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
122 @item nswap\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
123 Number of swaps.\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
124 \n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
125 @item nvcsw\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
126 Number of voluntary context switches.\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
127 \n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
128 @item oublock\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
129 Number of block output operations.\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
130 \n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
131 @item stime\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
132 A structure containing the system CPU time used. The structure has the\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
133 elements @code{sec} (seconds) @code{usec} (microseconds).\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
134 \n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
135 @item utime\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
136 A structure containing the user CPU time used. The structure has the\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
137 elements @code{sec} (seconds) @code{usec} (microseconds).\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
138 @end table\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
139 @end deftypefn")
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
140 {
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
141 Octave_map m;
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
142 Octave_map tv_tmp;
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
143
5775
ace8d8d26933 [project @ 2006-04-24 19:13:06 by jwe]
jwe
parents: 5698
diff changeset
144 // FIXME -- maybe encapsulate all of this in a liboctave class
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
145 #if defined (HAVE_GETRUSAGE)
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
146
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
147 struct rusage ru;
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
148
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
149 getrusage (RUSAGE_SELF, &ru);
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
150
4675
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
151 tv_tmp.assign ("sec", static_cast<double> (ru.ru_utime.tv_sec));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
152 tv_tmp.assign ("usec", static_cast<double> (ru.ru_utime.tv_usec));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
153 m.assign ("utime", octave_value (tv_tmp));
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
154
4675
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
155 tv_tmp.assign ("sec", static_cast<double> (ru.ru_stime.tv_sec));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
156 tv_tmp.assign ("usec", static_cast<double> (ru.ru_stime.tv_usec));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
157 m.assign ("stime", octave_value (tv_tmp));
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
158
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
159 #if ! defined (RUSAGE_TIMES_ONLY)
4675
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
160 m.assign ("maxrss", static_cast<double> (ru.ru_maxrss));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
161 m.assign ("ixrss", static_cast<double> (ru.ru_ixrss));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
162 m.assign ("idrss", static_cast<double> (ru.ru_idrss));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
163 m.assign ("isrss", static_cast<double> (ru.ru_isrss));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
164 m.assign ("minflt", static_cast<double> (ru.ru_minflt));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
165 m.assign ("majflt", static_cast<double> (ru.ru_majflt));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
166 m.assign ("nswap", static_cast<double> (ru.ru_nswap));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
167 m.assign ("inblock", static_cast<double> (ru.ru_inblock));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
168 m.assign ("oublock", static_cast<double> (ru.ru_oublock));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
169 m.assign ("msgsnd", static_cast<double> (ru.ru_msgsnd));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
170 m.assign ("msgrcv", static_cast<double> (ru.ru_msgrcv));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
171 m.assign ("nsignals", static_cast<double> (ru.ru_nsignals));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
172 m.assign ("nvcsw", static_cast<double> (ru.ru_nvcsw));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
173 m.assign ("nivcsw", static_cast<double> (ru.ru_nivcsw));
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
174 #endif
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
175
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
176 #else
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
177 #if defined (HAVE_TIMES) && defined (HAVE_SYS_TIMES_H)
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
178
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
179 struct tms t;
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
180
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
181 times (&t);
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
182
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
183 unsigned long ticks;
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
184 unsigned long seconds;
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
185 unsigned long fraction;
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
186
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
187 ticks = t.tms_utime + t.tms_cutime;
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
188 fraction = ticks % HZ;
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
189 seconds = ticks / HZ;
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
190
4675
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
191 tv_tmp.assign ("sec", static_cast<double> (seconds));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
192 tv_tmp.assign ("usec", static_cast<double> (fraction * 1e6 / HZ));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
193 m.assign ("utime", octave_value (tv_tmp));
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
194
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
195 ticks = t.tms_stime + t.tms_cstime;
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
196 fraction = ticks % HZ;
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
197 seconds = ticks / HZ;
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
198
4675
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
199 tv_tmp.assign ("sec", static_cast<double> (seconds));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
200 tv_tmp.assign ("usec", static_cast<double> (fraction * 1e6 / HZ));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
201 m.assign ("stime", octave_value (tv_tmp));
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
202
6237
4a8c7f586ec4 [project @ 2007-01-10 19:20:09 by jwe]
jwe
parents: 5828
diff changeset
203 #elif defined (__WIN32__)
5698
e33aff8ba378 [project @ 2006-03-21 16:36:58 by dbateman]
dbateman
parents: 5307
diff changeset
204 HANDLE hProcess = GetCurrentProcess ();
e33aff8ba378 [project @ 2006-03-21 16:36:58 by dbateman]
dbateman
parents: 5307
diff changeset
205 FILETIME ftCreation, ftExit, ftUser, ftKernel;
e33aff8ba378 [project @ 2006-03-21 16:36:58 by dbateman]
dbateman
parents: 5307
diff changeset
206 GetProcessTimes (hProcess, &ftCreation, &ftExit, &ftKernel, &ftUser);
e33aff8ba378 [project @ 2006-03-21 16:36:58 by dbateman]
dbateman
parents: 5307
diff changeset
207
5828
22e23bee74c8 [project @ 2006-05-23 06:05:14 by jwe]
jwe
parents: 5775
diff changeset
208 int64_t itmp = *(reinterpret_cast<int64_t *> (&ftUser));
5698
e33aff8ba378 [project @ 2006-03-21 16:36:58 by dbateman]
dbateman
parents: 5307
diff changeset
209 tv_tmp.assign ("sec", static_cast<double> (itmp / 10000000U));
e33aff8ba378 [project @ 2006-03-21 16:36:58 by dbateman]
dbateman
parents: 5307
diff changeset
210 tv_tmp.assign ("usec", static_cast<double> (itmp % 10000000U) / 10.);
e33aff8ba378 [project @ 2006-03-21 16:36:58 by dbateman]
dbateman
parents: 5307
diff changeset
211 m.assign ("utime", octave_value (tv_tmp));
e33aff8ba378 [project @ 2006-03-21 16:36:58 by dbateman]
dbateman
parents: 5307
diff changeset
212
5828
22e23bee74c8 [project @ 2006-05-23 06:05:14 by jwe]
jwe
parents: 5775
diff changeset
213 itmp = *(reinterpret_cast<int64_t *> (&ftKernel));
5698
e33aff8ba378 [project @ 2006-03-21 16:36:58 by dbateman]
dbateman
parents: 5307
diff changeset
214 tv_tmp.assign ("sec", static_cast<double> (itmp / 10000000U));
e33aff8ba378 [project @ 2006-03-21 16:36:58 by dbateman]
dbateman
parents: 5307
diff changeset
215 tv_tmp.assign ("usec", static_cast<double> (itmp % 10000000U) / 10.);
e33aff8ba378 [project @ 2006-03-21 16:36:58 by dbateman]
dbateman
parents: 5307
diff changeset
216 m.assign ("stime", octave_value (tv_tmp));
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
217 #else
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
218
4675
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
219 tv_tmp.assign ("sec", 0);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
220 tv_tmp.assign ("usec", 0);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
221 m.assign ("utime", octave_value (tv_tmp));
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
222
4675
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
223 tv_tmp.assign ("sec", 0);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
224 tv_tmp.assign ("usec", 0);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
225 m.assign ("stime", octave_value (tv_tmp));
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
226
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
227 #endif
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
228
4102
cbac6756967e [project @ 2002-10-14 20:16:44 by jwe]
jwe
parents: 3301
diff changeset
229 double tmp = lo_ieee_nan_value ();
cbac6756967e [project @ 2002-10-14 20:16:44 by jwe]
jwe
parents: 3301
diff changeset
230
4675
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
231 m.assign ("maxrss", tmp);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
232 m.assign ("ixrss", tmp);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
233 m.assign ("idrss", tmp);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
234 m.assign ("isrss", tmp);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
235 m.assign ("minflt", tmp);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
236 m.assign ("majflt", tmp);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
237 m.assign ("nswap", tmp);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
238 m.assign ("inblock", tmp);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
239 m.assign ("oublock", tmp);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
240 m.assign ("msgsnd", tmp);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
241 m.assign ("msgrcv", tmp);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
242 m.assign ("nsignals", tmp);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
243 m.assign ("nvcsw", tmp);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
244 m.assign ("nivcsw", tmp);
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
245
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
246 #endif
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
247
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
248 return octave_value (m);
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
249 }
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
250
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
251 /*
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
252 ;;; Local Variables: ***
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
253 ;;; mode: C++ ***
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
254 ;;; End: ***
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
255 */