/***************************************************************************
* DBS: Distributed Benchmark System
* Copyright (c) 1995, 1996, 1997 Yukio Murayama
* Copyright (c) 1995, 1996, 1997 Nara Institute of Science and Technology
* All rights reserved.
*
* Permission to use, copy, modify and distribute this software and its
* documentation is hereby granted, provided only with the following
* conditions are satisfied:
*
* 1. Both the copyright notice and this permission notice appear in
* all copies of the software, derivative works or modified versions,
* and any portions thereof, and that both notices appear in
* supporting documentation.
* 2. All advertising materials mentioning features or use of this
* software must display the following acknowledgement:
* This product includes software developed by Nara Institute of
* Science and Technology and its contributors.
* 3. Neither the name of Nara Institute of Science and Technology nor
* the names of its contributors may be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPER ``AS IS'' AND NARA
* INSTITUTE OF SCIENCE AND TECHNOLOGY DISCLAIMS ANY LIABILITY OF
* ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF
* THIS SOFTWARE. ALSO, THERE IS NO WARRANTY IMPLIED OR OTHERWISE,
* NOR IS SUPPORT PROVIDED.
*
* Feedback of the results generated from any improvements or
* extensions made to this software would be much appreciated.
* Any such feedback should be sent to:
*
* Yukio Murayama
* E-mail: <yukio-m@is.aist-nara.ac.jp>
* URL: <http://shika.aist-nara.ac.jp/member/yukio-m/index.html>
* Address: Graduate School of Information Science,
* Nara Institute of Science and Technology,
* Takayama 8916-5, Ikoma, Nara, Japan
*
* Nara Institute of Science and Technology has the rights to
* redistribute these changes.
***************************************************************************/
/*****************************************************************
* Distributed Benchmark System
* DBS Common routines
* $Revision: 1.8 $
* $Date: 1997/02/11 03:14:10 $
* $Author: yukio-m $
*****************************************************************/
#include <stdio.h>
#include <sys/types.h>
#include <sys/time.h>
#include "dbs.h"
/*
* timeval to double
*
* tp -> double
*/
double timeval2double(tp)
struct timeval *tp;
{
return (double)tp->tv_sec + (double)tp->tv_usec/1000000.0;
}
/*
* Timeval Put
*
* double -> timeval
*/
void timeval_put(tp, a)
struct timeval *tp;
double a;
{
tp->tv_sec = (int)a;
tp->tv_usec = (int)(a*1000000) % 1000000;
}
/*
* Timeval Copy
*
* timeval2 -> timeval1
*/
void timeval_cp(tp1, tp2)
struct timeval *tp1, *tp2;
{
tp1->tv_sec = tp2->tv_sec;
tp1->tv_usec = tp2->tv_usec;
}
/*
* Timeval ADD
*
* timeval1 + timeval2 -> timeval1
*/
void timeval_add(tp1, tp2)
struct timeval *tp1, *tp2;
{
tp1->tv_sec += tp2->tv_sec;
tp1->tv_usec += tp2->tv_usec;
if (tp1->tv_usec >= 1000000) {
tp1->tv_sec += tp1->tv_usec / 1000000;
tp1->tv_usec %= 1000000;
}
}
/*
* Timeval SUB
*
* timeval1 - timeval2 -> timeval1
*/
void timeval_sub(tp1, tp2)
struct timeval *tp1, *tp2;
{
tp1->tv_sec -= tp2->tv_sec;
tp1->tv_usec -= tp2->tv_usec;
if (tp1->tv_usec < 0) {
tp1->tv_sec --;
tp1->tv_usec += 1000000;
}
}
/*
* Timeval SUB
*
* timeval + double -> timeval
*/
void timeval_add_double(tp, time)
struct timeval *tp;
double time;
{
tp->tv_sec = tp->tv_sec + (int)time;
tp->tv_usec = tp->tv_usec + (int)(time*1000000) % 1000000;
if (tp->tv_usec >= 1000000) {
tp->tv_sec += tp->tv_usec / 1000000;
tp->tv_usec %= 1000000;
}
}
syntax highlighted by Code2HTML, v. 0.9.1