ronald@UCDAVIS.EDU (06/01/89)
Here is an additional patch to go along with the patches I posted
previously that allows the use of the timer functions in libg++
on a USG (System V) machine.
--
Ronald Cole | uucp: cvms!ronald voice: +1 916 895 8321
Senior Software Engineer | internet: csusac!cvms!ronald@ucdavis.edu
CVM Systems +----------------------------------------------------
"No sex, please, we're software engineers." - Michael Swaine
------------------------- starts here -----------------------------
diff -rc2 libg++-1.35.0/src/builtin.cc libg++/src/builtin.cc
*** libg++-1.35.0/src/builtin.cc Sun May 7 05:19:36 1989
--- libg++/src/builtin.cc Wed May 31 13:36:40 1989
***************
*** 321,334 ****
// surely OK for these machines...
! #if defined(BSD) || defined(vax) || defined(sun)
extern "C" {
#include <sys/time.h>
#include <sys/resource.h>
int getrusage(int, struct rusage*);
}
static struct rusage Old_Time;
static struct rusage New_Time;
static int Timer_Set = 0;
--- 321,345 ----
// surely OK for these machines...
! #if defined(BSD) || defined(USG) || defined(vax) || defined(sun)
extern "C" {
+ #ifdef USG
+ #include <sys/types.h>
+ #include <sys/param.h>
+ #include <sys/times.h>
+ #else
#include <sys/time.h>
#include <sys/resource.h>
int getrusage(int, struct rusage*);
+ #endif
}
+ #ifdef USG
+ static struct tms Old_Time;
+ static struct tms New_Time;
+ #else
static struct rusage Old_Time;
static struct rusage New_Time;
+ #endif
static int Timer_Set = 0;
***************
*** 336,341 ****
--- 347,357 ----
{
Timer_Set = 1;
+ #ifdef USG
+ times(&Old_Time);
+ return((double) Old_Time.tms_utime / HZ);
+ #else
getrusage(RUSAGE_SELF,&Old_Time); /* set starting process time */
return(Old_Time.ru_utime.tv_sec + (Old_Time.ru_utime.tv_usec / 1000000.0));
+ #endif
}
***************
*** 353,365 ****
--- 369,393 ----
else {
/* get process time */
+ #ifdef USG
+ times(&New_Time);
+ #else
getrusage(RUSAGE_SELF,&New_Time);
+ #endif
if (Last_Time == 0.0) {
+ #ifdef USG
+ return((double) (New_Time.tms_utime - Old_Time.tms_utime) / HZ);
+ #else
return((New_Time.ru_utime.tv_sec - Old_Time.ru_utime.tv_sec) +
((New_Time.ru_utime.tv_usec - Old_Time.ru_utime.tv_usec)
/ 1000000.0));
+ #endif
}
else {
+ #ifdef USG
+ return((double) New_Time.tms_utime / HZ - Last_Time);
+ #else
return((New_Time.ru_utime.tv_sec +
(New_Time.ru_utime.tv_usec / 1000000.0)) - Last_Time);
+ #endif
}
}
-------------------------- ends here ------------------------------