comparison src/resource.cc @ 1189:ccf2867d8a80

[project @ 1995-03-30 20:25:43 by jwe] Initial revision
author jwe
date Thu, 30 Mar 1995 20:26:09 +0000
parents
children b6360f2d4fa6
comparison
equal deleted inserted replaced
1188:da82f03f7a51 1189:ccf2867d8a80
1 // resource.cc -*- C++ -*-
2 /*
3
4 Copyright (C) 1992, 1993, 1994, 1995 John W. Eaton
5
6 This file is part of Octave.
7
8 Octave is free software; you can redistribute it and/or modify it
9 under the terms of the GNU General Public License as published by the
10 Free Software Foundation; either version 2, or (at your option) any
11 later version.
12
13 Octave is distributed in the hope that it will be useful, but WITHOUT
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
16 for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with Octave; see the file COPYING. If not, write to the Free
20 Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
21
22 */
23
24 #ifdef HAVE_CONFIG_H
25 #include "config.h"
26 #endif
27
28 #include "tree-const.h"
29 #include "systime.h"
30 #include "oct-obj.h"
31 #include "oct-map.h"
32 #include "defun.h"
33 #include "utils.h"
34 #include "help.h"
35
36 #ifdef HAVE_SYS_RESOURCE_H
37 extern "C"
38 {
39 #include <sys/resource.h>
40 }
41 #endif
42
43 #ifndef RUSAGE_SELF
44 #define RUSAGE_SELF 0
45 #endif
46
47 // System resource functions.
48
49 static Octave_map
50 mk_ru_map (struct rusage *ru)
51 {
52 Octave_map m;
53 Octave_map tv_tmp;
54
55 #if defined (HAVE_GETRUSAGE)
56 tv_tmp ["tv_sec"] = (double) ru->ru_utime.tv_sec;
57 tv_tmp ["tv_usec"] = (double) ru->ru_utime.tv_usec;
58 m ["ru_utime"] = tree_constant (tv_tmp);
59
60 tv_tmp ["tv_sec"] = (double) ru->ru_stime.tv_sec;
61 tv_tmp ["tv_usec"] = (double) ru->ru_stime.tv_usec;
62 m ["ru_stime"] = tree_constant (tv_tmp);
63
64 m ["ru_maxrss"] = (double) ru->ru_maxrss;
65 m ["ru_ixrss"] = (double) ru->ru_ixrss;
66 m ["ru_idrss"] = (double) ru->ru_idrss;
67 m ["ru_isrss"] = (double) ru->ru_isrss;
68 m ["ru_minflt"] = (double) ru->ru_minflt;
69 m ["ru_majflt"] = (double) ru->ru_majflt;
70 m ["ru_nswap"] = (double) ru->ru_nswap;
71 m ["ru_inblock"] = (double) ru->ru_inblock;
72 m ["ru_oublock"] = (double) ru->ru_oublock;
73 m ["ru_msgsnd"] = (double) ru->ru_msgsnd;
74 m ["ru_msgrcv"] = (double) ru->ru_msgrcv;
75 m ["ru_nsignals"] = (double) ru->ru_nsignals;
76 m ["ru_nvcsw"] = (double) ru->ru_nvcsw;
77 m ["ru_nivcsw"] = (double) ru->ru_nivcsw;
78 #else
79 tv_tmp ["tv_sec"] = octave_NaN;
80 tv_tmp ["tv_usec"] = octave_NaN;
81 m ["ru_utime"] = tree_constant (tv_tmp);
82
83 tv_tmp ["tv_sec"] = octave_NaN;
84 tv_tmp ["tv_usec"] = octave_NaN;
85 m ["ru_stime"] = tree_constant (tv_tmp);
86
87 m ["ru_maxrss"] = octave_NaN;
88 m ["ru_ixrss"] = octave_NaN;
89 m ["ru_idrss"] = octave_NaN;
90 m ["ru_isrss"] = octave_NaN;
91 m ["ru_minflt"] = octave_NaN;
92 m ["ru_majflt"] = octave_NaN;
93 m ["ru_nswap"] = octave_NaN;
94 m ["ru_inblock"] = octave_NaN;
95 m ["ru_oublock"] = octave_NaN;
96 m ["ru_msgsnd"] = octave_NaN;
97 m ["ru_msgrcv"] = octave_NaN;
98 m ["ru_nsignals"] = octave_NaN;
99 m ["ru_nvcsw"] = octave_NaN;
100 m ["ru_nivcsw"] = octave_NaN;
101 #endif
102
103 return m;
104 }
105
106 DEFUN ("getrusage", Fgetrusage, Sgetrusage, 0, 0,
107 "getrusage ()\n\
108 \n\
109 Return system resource statistics.")
110 {
111 Octave_object retval;
112
113 #if defined (HAVE_GETRUSAGE)
114
115 struct rusage resource_stats;
116
117 getrusage (RUSAGE_SELF, &resource_stats);
118
119 retval = mk_ru_map (&resource_stats);
120
121 #endif
122
123 return retval;
124 }
125
126 /*
127 ;;; Local Variables: ***
128 ;;; mode: C++ ***
129 ;;; page-delimiter: "^/\\*" ***
130 ;;; End: ***
131 */