time.h revision 1541
1/* 2 * Copyright (c) 1982, 1986, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 3. All advertising materials mentioning features or use of this software 14 * must display the following acknowledgement: 15 * This product includes software developed by the University of 16 * California, Berkeley and its contributors. 17 * 4. Neither the name of the University nor the names of its contributors 18 * may be used to endorse or promote products derived from this software 19 * without specific prior written permission. 20 * 21 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31 * SUCH DAMAGE. 32 * 33 * @(#)time.h 8.1 (Berkeley) 6/2/93 34 */ 35 36#ifndef _SYS_TIME_H_ 37#define _SYS_TIME_H_ 38 39/* 40 * Structure returned by gettimeofday(2) system call, 41 * and used in other calls. 42 */ 43struct timeval { 44 long tv_sec; /* seconds */ 45 long tv_usec; /* and microseconds */ 46}; 47 48/* 49 * Structure defined by POSIX.4 to be like a timeval. 50 */ 51struct timespec { 52 long ts_sec; /* seconds */ 53 long ts_nsec; /* and nanoseconds */ 54}; 55 56#define TIMEVAL_TO_TIMESPEC(tv, ts) { \ 57 (ts)->ts_sec = (tv)->tv_sec; \ 58 (ts)->ts_nsec = (tv)->tv_usec * 1000; \ 59} 60#define TIMESPEC_TO_TIMEVAL(tv, ts) { \ 61 (tv)->tv_sec = (ts)->ts_sec; \ 62 (tv)->tv_usec = (ts)->ts_nsec / 1000; \ 63} 64 65struct timezone { 66 int tz_minuteswest; /* minutes west of Greenwich */ 67 int tz_dsttime; /* type of dst correction */ 68}; 69#define DST_NONE 0 /* not on dst */ 70#define DST_USA 1 /* USA style dst */ 71#define DST_AUST 2 /* Australian style dst */ 72#define DST_WET 3 /* Western European dst */ 73#define DST_MET 4 /* Middle European dst */ 74#define DST_EET 5 /* Eastern European dst */ 75#define DST_CAN 6 /* Canada */ 76 77/* Operations on timevals. */ 78#define timerclear(tvp) (tvp)->tv_sec = (tvp)->tv_usec = 0 79#define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec) 80#define timercmp(tvp, uvp, cmp) \ 81 (((tvp)->tv_sec == (uvp)->tv_sec) ? \ 82 ((tvp)->tv_usec cmp (uvp)->tv_usec) : \ 83 ((tvp)->tv_sec cmp (uvp)->tv_sec)) 84 85/* 86 * Names of the interval timers, and structure 87 * defining a timer setting. 88 */ 89#define ITIMER_REAL 0 90#define ITIMER_VIRTUAL 1 91#define ITIMER_PROF 2 92 93struct itimerval { 94 struct timeval it_interval; /* timer interval */ 95 struct timeval it_value; /* current value */ 96}; 97 98/* 99 * Getkerninfo clock information structure 100 */ 101struct clockinfo { 102 int hz; /* clock frequency */ 103 int tick; /* micro-seconds per hz tick */ 104 int stathz; /* statistics clock frequency */ 105 int profhz; /* profiling clock frequency */ 106}; 107 108#ifndef KERNEL 109#include <time.h> 110 111#ifndef _POSIX_SOURCE 112#include <sys/cdefs.h> 113 114__BEGIN_DECLS 115int adjtime __P((const struct timeval *, struct timeval *)); 116int getitimer __P((int, struct itimerval *)); 117int gettimeofday __P((struct timeval *, struct timezone *)); 118int setitimer __P((int, const struct itimerval *, struct itimerval *)); 119int settimeofday __P((const struct timeval *, const struct timezone *)); 120int utimes __P((const char *, const struct timeval *)); 121__END_DECLS 122#endif /* !POSIX */ 123 124#endif /* !KERNEL */ 125 126#endif /* !_SYS_TIME_H_ */ 127