text: /* time.c -- Implementation of the low-level time() routine
   *
   * Copyright (c) 2004 National Semiconductor Corporation
   *
   * The authors hereby grant permission to use, copy, modify, distribute,
   * and license this software and its documentation for any purpose, provided
   * that existing copyright notices are retained in all copies and that this
   * notice is included verbatim in any distributions. No written agreement,
   * license, or royalty fee is required for any of the authorized uses.
   * Modifications to this software may be copyrighted by their authors
   * and need not follow the licensing terms described here, provided that
   * the new terms are clearly indicated on the first page of each file where
   * they apply.
   */
  
  #include <unistd.h>
  #include <time.h>
  #include <errno.h>
  #include <sys/time.h>
  #include <sys/times.h>
  #include <sys/syscall.h>
  
  time_t _Time (time_t *timer)
  {
    HOST_SERVICE (SVC_TIME);
  }
  
  time_t time (time_t *tod)
  {
    time_t t = _Time (NULL);
  
    if (tod)
      *tod = t;
    
    return (t);
  }
  
  /* _times -- no clock, so return an error.  */
  clock_t times (struct tms *buf)
  {
    errno = EINVAL;
    return (-1);
  }
  
  /* _gettimeofday -- implement in terms of time.  */
  int gettimeofday (struct timeval *tv, void *tzvp)
  {
    struct timezone *tz = tzvp;
    if (tz)
      tz->tz_minuteswest = tz->tz_dsttime = 0;
  
    tv->tv_usec = 0;
    tv->tv_sec = time (0);
    return 0;
  }
  
  