annotate src/DLD-FUNCTIONS/getrusage.cc @ 7017:a1dbe9d80eee

[project @ 2007-10-12 21:27:11 by jwe]
author jwe
date Fri, 12 Oct 2007 21:27:37 +0000
parents 93c65f2a5668
children c374691576f6
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
6f3902d56db8 [project @ 2007-02-26 21:08:49 by jwe]
jwe
parents: 6237
diff changeset
42 #endif
5698
e33aff8ba378 [project @ 2006-03-21 16:36:58 by dbateman]
dbateman
parents: 5307
diff changeset
43 #endif
e33aff8ba378 [project @ 2006-03-21 16:36:58 by dbateman]
dbateman
parents: 5307
diff changeset
44
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
45 #if defined (HAVE_TIMES) && defined (HAVE_SYS_TIMES_H)
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
46
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
47 #if defined (HAVE_SYS_PARAM_H)
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
48 #include <sys/param.h>
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
49 #endif
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
50 #include <sys/times.h>
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
51
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
52 #if !defined (HZ)
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
53 #if defined (CLK_TCK)
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
54 #define HZ CLK_TCK
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
55 #elif defined (USG)
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
56 #define HZ 100
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
57 #else
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
58 #define HZ 60
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
59 #endif
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
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
62 #endif
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
63
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
64 #include "defun-dld.h"
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
65 #include "oct-map.h"
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
66 #include "sysdep.h"
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
67 #include "ov.h"
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
68 #include "oct-obj.h"
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
69 #include "utils.h"
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
70
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
71 #ifndef RUSAGE_SELF
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
72 #define RUSAGE_SELF 0
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
73 #endif
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
74
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
75 // System resource functions.
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
76
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
77 DEFUN_DLD (getrusage, , ,
3301
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
78 "-*- texinfo -*-\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
79 @deftypefn {Loadable Function} {} getrusage ()\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
80 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
81 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
82 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
83 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
84 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
85 @code{getrusage}:\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
86 \n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
87 @table @code\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
88 @item idrss\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
89 Unshared data size.\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
90 \n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
91 @item inblock\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
92 Number of block input operations.\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
93 \n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
94 @item isrss\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
95 Unshared stack size.\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
96 \n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
97 @item ixrss\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
98 Shared memory size.\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
99 \n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
100 @item majflt\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
101 Number of major page faults.\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
102 \n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
103 @item maxrss\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
104 Maximum data size.\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
105 \n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
106 @item minflt\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
107 Number of minor page faults.\n\
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
108 \n\
3301
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
109 @item msgrcv\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
110 Number of messages received.\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
111 \n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
112 @item msgsnd\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
113 Number of messages sent.\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
114 \n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
115 @item nivcsw\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
116 Number of involuntary context switches.\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
117 \n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
118 @item nsignals\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
119 Number of signals received.\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
120 \n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
121 @item nswap\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
122 Number of swaps.\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
123 \n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
124 @item nvcsw\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
125 Number of voluntary context switches.\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
126 \n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
127 @item oublock\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
128 Number of block output operations.\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
129 \n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
130 @item stime\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
131 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
132 elements @code{sec} (seconds) @code{usec} (microseconds).\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
133 \n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
134 @item utime\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
135 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
136 elements @code{sec} (seconds) @code{usec} (microseconds).\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
137 @end table\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
138 @end deftypefn")
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
139 {
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
140 Octave_map m;
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
141 Octave_map tv_tmp;
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
142
5775
ace8d8d26933 [project @ 2006-04-24 19:13:06 by jwe]
jwe
parents: 5698
diff changeset
143 // 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
144 #if defined (HAVE_GETRUSAGE)
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
145
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
146 struct rusage ru;
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
147
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
148 getrusage (RUSAGE_SELF, &ru);
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
149
4675
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
150 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
151 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
152 m.assign ("utime", octave_value (tv_tmp));
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
153
4675
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
154 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
155 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
156 m.assign ("stime", octave_value (tv_tmp));
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
157
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
158 #if ! defined (RUSAGE_TIMES_ONLY)
4675
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
159 m.assign ("maxrss", static_cast<double> (ru.ru_maxrss));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
160 m.assign ("ixrss", static_cast<double> (ru.ru_ixrss));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
161 m.assign ("idrss", static_cast<double> (ru.ru_idrss));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
162 m.assign ("isrss", static_cast<double> (ru.ru_isrss));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
163 m.assign ("minflt", static_cast<double> (ru.ru_minflt));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
164 m.assign ("majflt", static_cast<double> (ru.ru_majflt));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
165 m.assign ("nswap", static_cast<double> (ru.ru_nswap));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
166 m.assign ("inblock", static_cast<double> (ru.ru_inblock));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
167 m.assign ("oublock", static_cast<double> (ru.ru_oublock));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
168 m.assign ("msgsnd", static_cast<double> (ru.ru_msgsnd));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
169 m.assign ("msgrcv", static_cast<double> (ru.ru_msgrcv));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
170 m.assign ("nsignals", static_cast<double> (ru.ru_nsignals));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
171 m.assign ("nvcsw", static_cast<double> (ru.ru_nvcsw));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
172 m.assign ("nivcsw", static_cast<double> (ru.ru_nivcsw));
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
173 #endif
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
174
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
175 #else
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
176 #if defined (HAVE_TIMES) && defined (HAVE_SYS_TIMES_H)
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
177
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
178 struct tms t;
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
179
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
180 times (&t);
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
181
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
182 unsigned long ticks;
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
183 unsigned long seconds;
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
184 unsigned long fraction;
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
185
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
186 ticks = t.tms_utime + t.tms_cutime;
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
187 fraction = ticks % HZ;
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
188 seconds = ticks / HZ;
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
189
4675
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
190 tv_tmp.assign ("sec", static_cast<double> (seconds));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
191 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
192 m.assign ("utime", octave_value (tv_tmp));
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
193
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
194 ticks = t.tms_stime + t.tms_cstime;
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
195 fraction = ticks % HZ;
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
196 seconds = ticks / HZ;
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
197
4675
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
198 tv_tmp.assign ("sec", static_cast<double> (seconds));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
199 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
200 m.assign ("stime", octave_value (tv_tmp));
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
201
6237
4a8c7f586ec4 [project @ 2007-01-10 19:20:09 by jwe]
jwe
parents: 5828
diff changeset
202 #elif defined (__WIN32__)
5698
e33aff8ba378 [project @ 2006-03-21 16:36:58 by dbateman]
dbateman
parents: 5307
diff changeset
203 HANDLE hProcess = GetCurrentProcess ();
e33aff8ba378 [project @ 2006-03-21 16:36:58 by dbateman]
dbateman
parents: 5307
diff changeset
204 FILETIME ftCreation, ftExit, ftUser, ftKernel;
e33aff8ba378 [project @ 2006-03-21 16:36:58 by dbateman]
dbateman
parents: 5307
diff changeset
205 GetProcessTimes (hProcess, &ftCreation, &ftExit, &ftKernel, &ftUser);
e33aff8ba378 [project @ 2006-03-21 16:36:58 by dbateman]
dbateman
parents: 5307
diff changeset
206
5828
22e23bee74c8 [project @ 2006-05-23 06:05:14 by jwe]
jwe
parents: 5775
diff changeset
207 int64_t itmp = *(reinterpret_cast<int64_t *> (&ftUser));
5698
e33aff8ba378 [project @ 2006-03-21 16:36:58 by dbateman]
dbateman
parents: 5307
diff changeset
208 tv_tmp.assign ("sec", static_cast<double> (itmp / 10000000U));
e33aff8ba378 [project @ 2006-03-21 16:36:58 by dbateman]
dbateman
parents: 5307
diff changeset
209 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
210 m.assign ("utime", octave_value (tv_tmp));
e33aff8ba378 [project @ 2006-03-21 16:36:58 by dbateman]
dbateman
parents: 5307
diff changeset
211
5828
22e23bee74c8 [project @ 2006-05-23 06:05:14 by jwe]
jwe
parents: 5775
diff changeset
212 itmp = *(reinterpret_cast<int64_t *> (&ftKernel));
5698
e33aff8ba378 [project @ 2006-03-21 16:36:58 by dbateman]
dbateman
parents: 5307
diff changeset
213 tv_tmp.assign ("sec", static_cast<double> (itmp / 10000000U));
e33aff8ba378 [project @ 2006-03-21 16:36:58 by dbateman]
dbateman
parents: 5307
diff changeset
214 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
215 m.assign ("stime", octave_value (tv_tmp));
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
216 #else
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
217
4675
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
218 tv_tmp.assign ("sec", 0);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
219 tv_tmp.assign ("usec", 0);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
220 m.assign ("utime", octave_value (tv_tmp));
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
221
4675
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
222 tv_tmp.assign ("sec", 0);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
223 tv_tmp.assign ("usec", 0);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
224 m.assign ("stime", octave_value (tv_tmp));
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
225
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
226 #endif
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
227
4102
cbac6756967e [project @ 2002-10-14 20:16:44 by jwe]
jwe
parents: 3301
diff changeset
228 double tmp = lo_ieee_nan_value ();
cbac6756967e [project @ 2002-10-14 20:16:44 by jwe]
jwe
parents: 3301
diff changeset
229
4675
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
230 m.assign ("maxrss", tmp);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
231 m.assign ("ixrss", tmp);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
232 m.assign ("idrss", tmp);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
233 m.assign ("isrss", tmp);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
234 m.assign ("minflt", tmp);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
235 m.assign ("majflt", tmp);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
236 m.assign ("nswap", tmp);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
237 m.assign ("inblock", tmp);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
238 m.assign ("oublock", tmp);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
239 m.assign ("msgsnd", tmp);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
240 m.assign ("msgrcv", tmp);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
241 m.assign ("nsignals", tmp);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
242 m.assign ("nvcsw", tmp);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
243 m.assign ("nivcsw", tmp);
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
244
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
245 #endif
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
246
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
247 return octave_value (m);
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
248 }
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 ;;; Local Variables: ***
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
252 ;;; mode: C++ ***
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
253 ;;; End: ***
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
254 */