summaryrefslogtreecommitdiff
path: root/time/sys/time.h
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>1995-02-18 01:27:10 +0000
committerRoland McGrath <roland@gnu.org>1995-02-18 01:27:10 +0000
commit28f540f45bbacd939bfd07f213bcad2bf730b1bf (patch)
tree15f07c4c43d635959c6afee96bde71fb1b3614ee /time/sys/time.h
initial import
Diffstat (limited to 'time/sys/time.h')
-rw-r--r--time/sys/time.h147
1 files changed, 147 insertions, 0 deletions
diff --git a/time/sys/time.h b/time/sys/time.h
new file mode 100644
index 0000000000..7275561541
--- /dev/null
+++ b/time/sys/time.h
@@ -0,0 +1,147 @@
+/* Copyright (C) 1991, 1992, 1993, 1994 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB. If
+not, write to the, 1992 Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA. */
+
+#ifndef _SYS_TIME_H
+
+#define _SYS_TIME_H 1
+#include <features.h>
+
+#include <time.h>
+
+__BEGIN_DECLS
+
+/* A time value that is accurate to the nearest
+ microsecond but also has a range of years. */
+struct timeval
+ {
+ int tv_sec; /* Seconds. */
+ int tv_usec; /* Microseconds. */
+ };
+
+/* POSIX.4 structure for a time value. This is like a `struct timeval' but
+ has nanoseconds instead of microseconds. */
+struct timespec
+ {
+ long int ts_sec; /* Seconds. */
+ long int ts_nsec; /* Nanoseconds. */
+ };
+
+/* Macros for converting between `struct timeval' and `struct timespec'. */
+#define TIMEVAL_TO_TIMESPEC(tv, ts) { \
+ (ts)->ts_sec = (tv)->tv_sec; \
+ (ts)->ts_nsec = (tv)->tv_usec * 1000; \
+}
+#define TIMESPEC_TO_TIMEVAL(tv, ts) { \
+ (tv)->tv_sec = (ts)->ts_sec; \
+ (tv)->tv_usec = (ts)->ts_nsec / 1000; \
+}
+
+
+/* Structure crudely representing a timezone.
+ This is obsolete and should never be used. */
+struct timezone
+ {
+ int tz_minuteswest; /* Minutes west of GMT. */
+ int tz_dsttime; /* Nonzero if DST is ever in effect. */
+ };
+
+/* Get the current time of day and timezone information,
+ putting it into *TV and *TZ. If TZ is NULL, *TZ is not filled.
+ Returns 0 on success, -1 on errors.
+ NOTE: This form of timezone information is obsolete.
+ Use the functions and variables declared in <time.h> instead. */
+extern int __gettimeofday __P ((struct timeval *__tv,
+ struct timezone *__tz));
+extern int gettimeofday __P ((struct timeval *__tv,
+ struct timezone *__tz));
+
+/* Set the current time of day and timezone information.
+ This call is restricted to the super-user. */
+extern int __settimeofday __P ((__const struct timeval *__tv,
+ __const struct timezone *__tz));
+extern int settimeofday __P ((__const struct timeval *__tv,
+ __const struct timezone *__tz));
+
+/* Adjust the current time of day by the amount in DELTA.
+ If OLDDELTA is not NULL, it is filled in with the amount
+ of time adjustment remaining to be done from the last `adjtime' call.
+ This call is restricted to the super-user. */
+extern int __adjtime __P ((__const struct timeval *__delta,
+ struct timeval *__olddelta));
+extern int adjtime __P ((__const struct timeval *__delta,
+ struct timeval *__olddelta));
+
+
+/* Values for the first argument to `getitimer' and `setitimer'. */
+enum __itimer_which
+ {
+ /* Timers run in real time. */
+ ITIMER_REAL = 0,
+ /* Timers run only when the process is executing. */
+ ITIMER_VIRTUAL = 1,
+ /* Timers run when the process is executing and when
+ the system is executing on behalf of the process. */
+ ITIMER_PROF = 2
+ };
+
+/* Type of the second argument to `getitimer' and
+ the second and third arguments `setitimer'. */
+struct itimerval
+ {
+ /* Value to put into `it_value' when the timer expires. */
+ struct timeval it_interval;
+ /* Time to the next timer expiration. */
+ struct timeval it_value;
+ };
+
+/* Set *VALUE to the current setting of timer WHICH.
+ Return 0 on success, -1 on errors. */
+extern int __getitimer __P ((enum __itimer_which __which,
+ struct itimerval *__value));
+extern int getitimer __P ((enum __itimer_which __which,
+ struct itimerval *__value));
+
+/* Set the timer WHICH to *NEW. If OLD is not NULL,
+ set *OLD to the old value of timer WHICH.
+ Returns 0 on success, -1 on errors. */
+extern int __setitimer __P ((enum __itimer_which __which,
+ struct itimerval *__new,
+ struct itimerval *__old));
+extern int setitimer __P ((enum __itimer_which __which,
+ struct itimerval *__new,
+ struct itimerval *__old));
+
+/* Change the access time of FILE to TVP[0] and
+ the modification time of FILE to TVP[1]. */
+extern int __utimes __P ((__const char *__file, struct timeval __tvp[2]));
+extern int utimes __P ((__const char *__file, struct timeval __tvp[2]));
+
+
+/* Convenience macros for operations on timevals.
+ NOTE: `timercmp' does not work for >= or <=. */
+#define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)
+#define timercmp(tvp, uvp, CMP) \
+ ((tvp)->tv_sec CMP (uvp)->tv_sec || \
+ (tvp)->tv_sec == (uvp)->tv_sec && (tvp)->tv_usec CMP (uvp)->tv_usec)
+#define timerclear(tvp) ((tvp)->tv_sec = (tvp)->tv_usec = 0)
+
+
+
+__END_DECLS
+
+#endif /* sys/time.h */