# $Id: timeval.pl,v 1.1 1997/04/03 07:39:44 friedman Exp $

sub gettimeofday
{
  local ($tv_struct) = pack ("L2", 0, 0);

  &get_syscall_numbers () if (! defined (&SYS_gettimeofday));
  if (syscall (&SYS_gettimeofday, $tv_struct) == -1)
    {
      &backtrace ("gettimeofday: $!");
    }
  return unpack ("L2", $tv_struct);
}

sub timeval_add
{
  local ($sec1, $usec1, $sec2, $usec2) = @_;
  local ($usec_max) = 1000000;

  $sec1 += $sec2;
  $usec1 += $usec2;
  if ($usec1 >= $usec_max)
    {
      $sec1 += int ($usec1 / $usec_max);
      $usec1 = ($usec1 % $usec_max);
    }
  return ($sec1, $usec1);
}

sub timeval_sub
{
  local ($sec1, $usec1, $sec2, $usec2) = @_;
  local ($usec_max) = 1000000;

  $sec1 -= $sec2;
  $usec1 -= $usec2;
  if ($usec1 < 0)
    {
      $sec1--;
      $usec1 += $usec_max;
    }
  return ($sec1, $usec1);
}
