GNU Octave  4.4.1
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
time-wrappers.c
Go to the documentation of this file.
1 /*
2 
3 Copyright (C) 2016-2018 John W. Eaton
4 
5 This file is part of Octave.
6 
7 Octave is free software: you can redistribute it and/or modify it
8 under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
11 
12 Octave is distributed in the hope that it will be useful, but
13 WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16 
17 You should have received a copy of the GNU General Public License
18 along with Octave; see the file COPYING. If not, see
19 <https://www.gnu.org/licenses/>.
20 
21 */
22 
23 // These functions may be provided by gnulib. We don't include gnulib
24 // headers directly in Octave's C++ source files to avoid problems that
25 // may be caused by the way that gnulib overrides standard library
26 // functions.
27 
28 #if defined (HAVE_CONFIG_H)
29 # include "config.h"
30 #endif
31 
32 #include <sys/resource.h>
33 #include <sys/time.h>
34 #include <sys/times.h>
35 
36 #include "time-wrappers.h"
37 
38 int
39 octave_gettimeofday_wrapper (time_t *sec, long *usec)
40 {
41  struct timeval tv;
42 
43  int status = gettimeofday (&tv, 0);
44 
45  if (status < 0)
46  {
47  *sec = 0;
48  *usec = 0;
49  }
50  else
51  {
52  *sec = tv.tv_sec;
53  *usec = tv.tv_usec;
54  }
55 
56  return status;
57 }
58 
59 int
60 octave_cpu_time (time_t *usr_sec, time_t *sys_sec,
61  long *usr_usec, long *sys_usec)
62 {
63  struct rusage ru;
64 
65  int status = getrusage (RUSAGE_SELF, &ru);
66 
67  if (status < 0)
68  {
69  *usr_sec = 0;
70  *sys_sec = 0;
71 
72  *usr_usec = 0;
73  *sys_usec = 0;
74  }
75  else
76  {
77  *usr_sec = ru.ru_utime.tv_sec;
78  *usr_usec = ru.ru_utime.tv_usec;
79 
80  *sys_sec = ru.ru_stime.tv_sec;
81  *sys_usec = ru.ru_stime.tv_usec;
82  }
83 
84  return status;
85 }
86 
87 int
88 octave_getrusage_wrapper (time_t *usr_sec, time_t *sys_sec,
89  long *usr_usec, long *sys_usec,
90  long *maxrss, long *ixrss, long *idrss,
91  long *isrss, long *minflt, long *majflt,
92  long *nswap, long *inblock, long *oublock,
93  long *msgsnd, long *msgrcv, long *nsignals,
94  long *nvcsw, long *nivcsw)
95 {
96  struct rusage ru;
97 
98  int status = getrusage (RUSAGE_SELF, &ru);
99 
100  if (status < 0)
101  {
102  *usr_sec = 0;
103  *usr_usec = 0;
104 
105  *sys_sec = 0;
106  *sys_usec = 0;
107 
108  *maxrss = 0;
109  *ixrss = 0;
110  *idrss = 0;
111  *isrss = 0;
112  *minflt = 0;
113  *majflt = 0;
114  *nswap = 0;
115  *inblock = 0;
116  *oublock = 0;
117  *msgsnd = 0;
118  *msgrcv = 0;
119  *nsignals = 0;
120  *nvcsw = 0;
121  *nivcsw = 0;
122  }
123  else
124  {
125  *usr_sec = ru.ru_utime.tv_sec;
126  *usr_usec = ru.ru_utime.tv_usec;
127 
128  *sys_sec = ru.ru_stime.tv_sec;
129  *sys_usec = ru.ru_stime.tv_usec;
130 
131  *maxrss = ru.ru_maxrss;
132  *ixrss = ru.ru_ixrss;
133  *idrss = ru.ru_idrss;
134  *isrss = ru.ru_isrss;
135  *minflt = ru.ru_minflt;
136  *majflt = ru.ru_majflt;
137  *nswap = ru.ru_nswap;
138  *inblock = ru.ru_inblock;
139  *oublock = ru.ru_oublock;
140  *msgsnd = ru.ru_msgsnd;
141  *msgrcv = ru.ru_msgrcv;
142  *nsignals = ru.ru_nsignals;
143  *nvcsw = ru.ru_nvcsw;
144  *nivcsw = ru.ru_nivcsw;
145  }
146 
147  return status;
148 }
149 
150 time_t
151 octave_mktime_wrapper (struct tm *tp)
152 {
153  return mktime (tp);
154 }
int octave_getrusage_wrapper(time_t *usr_sec, time_t *sys_sec, long *usr_usec, long *sys_usec, long *maxrss, long *ixrss, long *idrss, long *isrss, long *minflt, long *majflt, long *nswap, long *inblock, long *oublock, long *msgsnd, long *msgrcv, long *nsignals, long *nvcsw, long *nivcsw)
Definition: time-wrappers.c:88
int octave_gettimeofday_wrapper(time_t *sec, long *usec)
Definition: time-wrappers.c:39
time_t octave_mktime_wrapper(struct tm *tp)
int octave_cpu_time(time_t *usr_sec, time_t *sys_sec, long *usr_usec, long *sys_usec)
Definition: time-wrappers.c:60