annotate src/DLD-FUNCTIONS/getrusage.cc @ 5828:22e23bee74c8

[project @ 2006-05-23 06:05:14 by jwe]
author jwe
date Tue, 23 May 2006 06:05:14 +0000
parents ace8d8d26933
children 4a8c7f586ec4
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
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
3 Copyright (C) 1996, 1997 John W. Eaton
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
4
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
5 This file is part of Octave.
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
6
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
7 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
8 under the terms of the GNU General Public License as published by the
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
9 Free Software Foundation; either version 2, or (at your option) any
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
10 later version.
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
11
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
12 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
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
14 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
15 for more details.
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
16
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
18 along with Octave; see the file COPYING. If not, write to the Free
5307
4c8a2e4e0717 [project @ 2005-04-26 19:24:27 by jwe]
jwe
parents: 4675
diff changeset
19 Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
4c8a2e4e0717 [project @ 2005-04-26 19:24:27 by jwe]
jwe
parents: 4675
diff changeset
20 02110-1301, USA.
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
5698
e33aff8ba378 [project @ 2006-03-21 16:36:58 by dbateman]
dbateman
parents: 5307
diff changeset
38 #if defined (__MINGW32__)
e33aff8ba378 [project @ 2006-03-21 16:36:58 by dbateman]
dbateman
parents: 5307
diff changeset
39 #include <windows.h>
e33aff8ba378 [project @ 2006-03-21 16:36:58 by dbateman]
dbateman
parents: 5307
diff changeset
40 #endif
e33aff8ba378 [project @ 2006-03-21 16:36:58 by dbateman]
dbateman
parents: 5307
diff changeset
41
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
42 #if defined (HAVE_TIMES) && defined (HAVE_SYS_TIMES_H)
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
43
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
44 #if defined (HAVE_SYS_PARAM_H)
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
45 #include <sys/param.h>
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
46 #endif
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
47 #include <sys/times.h>
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
48
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
49 #if !defined (HZ)
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
50 #if defined (CLK_TCK)
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
51 #define HZ CLK_TCK
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
52 #elif defined (USG)
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
53 #define HZ 100
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
54 #else
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
55 #define HZ 60
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
56 #endif
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
57 #endif
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
58
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
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
61 #include "defun-dld.h"
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
62 #include "oct-map.h"
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
63 #include "sysdep.h"
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
64 #include "ov.h"
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
65 #include "oct-obj.h"
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
66 #include "utils.h"
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
67
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
68 #ifndef RUSAGE_SELF
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
69 #define RUSAGE_SELF 0
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
70 #endif
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 // System resource functions.
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
73
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
74 DEFUN_DLD (getrusage, , ,
3301
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
75 "-*- texinfo -*-\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
76 @deftypefn {Loadable Function} {} getrusage ()\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
77 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
78 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
79 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
80 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
81 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
82 @code{getrusage}:\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
83 \n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
84 @table @code\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
85 @item idrss\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
86 Unshared data size.\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 @item inblock\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
89 Number of block input operations.\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 isrss\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
92 Unshared stack size.\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 ixrss\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
95 Shared memory 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 majflt\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
98 Number of major page faults.\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 maxrss\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
101 Maximum data size.\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 minflt\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
104 Number of minor page faults.\n\
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
105 \n\
3301
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
106 @item msgrcv\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
107 Number of messages received.\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
108 \n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
109 @item msgsnd\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
110 Number of messages sent.\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 nivcsw\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
113 Number of involuntary context switches.\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 nsignals\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
116 Number of signals received.\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 nswap\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
119 Number of swaps.\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 nvcsw\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
122 Number of voluntary context switches.\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 oublock\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
125 Number of block output operations.\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 stime\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
128 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
129 elements @code{sec} (seconds) @code{usec} (microseconds).\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 utime\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
132 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
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 @end table\n\
02866242d3ae [project @ 1999-10-20 04:10:46 by jwe]
jwe
parents: 3176
diff changeset
135 @end deftypefn")
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
136 {
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
137 Octave_map m;
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
138 Octave_map tv_tmp;
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
139
5775
ace8d8d26933 [project @ 2006-04-24 19:13:06 by jwe]
jwe
parents: 5698
diff changeset
140 // 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
141 #if defined (HAVE_GETRUSAGE)
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
142
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
143 struct rusage ru;
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
144
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
145 getrusage (RUSAGE_SELF, &ru);
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
146
4675
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
147 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
148 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
149 m.assign ("utime", octave_value (tv_tmp));
2928
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_stime.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_stime.tv_usec));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
153 m.assign ("stime", octave_value (tv_tmp));
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
154
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
155 #if ! defined (RUSAGE_TIMES_ONLY)
4675
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
156 m.assign ("maxrss", static_cast<double> (ru.ru_maxrss));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
157 m.assign ("ixrss", static_cast<double> (ru.ru_ixrss));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
158 m.assign ("idrss", static_cast<double> (ru.ru_idrss));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
159 m.assign ("isrss", static_cast<double> (ru.ru_isrss));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
160 m.assign ("minflt", static_cast<double> (ru.ru_minflt));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
161 m.assign ("majflt", static_cast<double> (ru.ru_majflt));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
162 m.assign ("nswap", static_cast<double> (ru.ru_nswap));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
163 m.assign ("inblock", static_cast<double> (ru.ru_inblock));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
164 m.assign ("oublock", static_cast<double> (ru.ru_oublock));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
165 m.assign ("msgsnd", static_cast<double> (ru.ru_msgsnd));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
166 m.assign ("msgrcv", static_cast<double> (ru.ru_msgrcv));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
167 m.assign ("nsignals", static_cast<double> (ru.ru_nsignals));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
168 m.assign ("nvcsw", static_cast<double> (ru.ru_nvcsw));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
169 m.assign ("nivcsw", static_cast<double> (ru.ru_nivcsw));
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
170 #endif
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
171
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
172 #else
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
173 #if defined (HAVE_TIMES) && defined (HAVE_SYS_TIMES_H)
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 struct tms t;
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
176
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
177 times (&t);
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 unsigned long ticks;
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
180 unsigned long seconds;
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
181 unsigned long fraction;
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 ticks = t.tms_utime + t.tms_cutime;
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
184 fraction = ticks % HZ;
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
185 seconds = ticks / HZ;
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
186
4675
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
187 tv_tmp.assign ("sec", static_cast<double> (seconds));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
188 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
189 m.assign ("utime", octave_value (tv_tmp));
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
190
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
191 ticks = t.tms_stime + t.tms_cstime;
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
192 fraction = ticks % HZ;
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
193 seconds = ticks / HZ;
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
194
4675
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
195 tv_tmp.assign ("sec", static_cast<double> (seconds));
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
196 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
197 m.assign ("stime", octave_value (tv_tmp));
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
198
5698
e33aff8ba378 [project @ 2006-03-21 16:36:58 by dbateman]
dbateman
parents: 5307
diff changeset
199 #elif defined (__MINGW32__)
e33aff8ba378 [project @ 2006-03-21 16:36:58 by dbateman]
dbateman
parents: 5307
diff changeset
200 HANDLE hProcess = GetCurrentProcess ();
e33aff8ba378 [project @ 2006-03-21 16:36:58 by dbateman]
dbateman
parents: 5307
diff changeset
201 FILETIME ftCreation, ftExit, ftUser, ftKernel;
e33aff8ba378 [project @ 2006-03-21 16:36:58 by dbateman]
dbateman
parents: 5307
diff changeset
202 GetProcessTimes (hProcess, &ftCreation, &ftExit, &ftKernel, &ftUser);
e33aff8ba378 [project @ 2006-03-21 16:36:58 by dbateman]
dbateman
parents: 5307
diff changeset
203
5828
22e23bee74c8 [project @ 2006-05-23 06:05:14 by jwe]
jwe
parents: 5775
diff changeset
204 int64_t itmp = *(reinterpret_cast<int64_t *> (&ftUser));
5698
e33aff8ba378 [project @ 2006-03-21 16:36:58 by dbateman]
dbateman
parents: 5307
diff changeset
205 tv_tmp.assign ("sec", static_cast<double> (itmp / 10000000U));
e33aff8ba378 [project @ 2006-03-21 16:36:58 by dbateman]
dbateman
parents: 5307
diff changeset
206 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
207 m.assign ("utime", octave_value (tv_tmp));
e33aff8ba378 [project @ 2006-03-21 16:36:58 by dbateman]
dbateman
parents: 5307
diff changeset
208
5828
22e23bee74c8 [project @ 2006-05-23 06:05:14 by jwe]
jwe
parents: 5775
diff changeset
209 itmp = *(reinterpret_cast<int64_t *> (&ftKernel));
5698
e33aff8ba378 [project @ 2006-03-21 16:36:58 by dbateman]
dbateman
parents: 5307
diff changeset
210 tv_tmp.assign ("sec", static_cast<double> (itmp / 10000000U));
e33aff8ba378 [project @ 2006-03-21 16:36:58 by dbateman]
dbateman
parents: 5307
diff changeset
211 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
212 m.assign ("stime", octave_value (tv_tmp));
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
213 #else
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
214
4675
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
215 tv_tmp.assign ("sec", 0);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
216 tv_tmp.assign ("usec", 0);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
217 m.assign ("utime", octave_value (tv_tmp));
2928
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 ("stime", octave_value (tv_tmp));
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
222
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
223 #endif
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
224
4102
cbac6756967e [project @ 2002-10-14 20:16:44 by jwe]
jwe
parents: 3301
diff changeset
225 double tmp = lo_ieee_nan_value ();
cbac6756967e [project @ 2002-10-14 20:16:44 by jwe]
jwe
parents: 3301
diff changeset
226
4675
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
227 m.assign ("maxrss", tmp);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
228 m.assign ("ixrss", tmp);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
229 m.assign ("idrss", tmp);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
230 m.assign ("isrss", tmp);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
231 m.assign ("minflt", tmp);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
232 m.assign ("majflt", tmp);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
233 m.assign ("nswap", tmp);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
234 m.assign ("inblock", tmp);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
235 m.assign ("oublock", tmp);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
236 m.assign ("msgsnd", tmp);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
237 m.assign ("msgrcv", tmp);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
238 m.assign ("nsignals", tmp);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
239 m.assign ("nvcsw", tmp);
f6d6335c08f6 [project @ 2003-12-16 05:11:26 by jwe]
jwe
parents: 4233
diff changeset
240 m.assign ("nivcsw", tmp);
2928
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
241
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
242 #endif
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
243
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
244 return octave_value (m);
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
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 ;;; Local Variables: ***
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
249 ;;; mode: C++ ***
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
250 ;;; End: ***
295f037b4b3e [project @ 1997-05-05 05:32:33 by jwe]
jwe
parents:
diff changeset
251 */