| Commit | Line | Data |
|---|---|---|
| 984263bc MD |
1 | /* |
| 2 | * Copyright (c) 1989, 1993 | |
| 3 | * The Regents of the University of California. All rights reserved. | |
| 4 | * (c) UNIX System Laboratories, Inc. | |
| 5 | * All or some portions of this file are derived from material licensed | |
| 6 | * to the University of California by American Telephone and Telegraph | |
| 7 | * Co. or Unix System Laboratories, Inc. and are reproduced herein with | |
| 8 | * the permission of UNIX System Laboratories, Inc. | |
| 9 | * | |
| 10 | * Redistribution and use in source and binary forms, with or without | |
| 11 | * modification, are permitted provided that the following conditions | |
| 12 | * are met: | |
| 13 | * 1. Redistributions of source code must retain the above copyright | |
| 14 | * notice, this list of conditions and the following disclaimer. | |
| 15 | * 2. Redistributions in binary form must reproduce the above copyright | |
| 16 | * notice, this list of conditions and the following disclaimer in the | |
| 17 | * documentation and/or other materials provided with the distribution. | |
| 18 | * 3. All advertising materials mentioning features or use of this software | |
| 19 | * must display the following acknowledgement: | |
| 20 | * This product includes software developed by the University of | |
| 21 | * California, Berkeley and its contributors. | |
| 22 | * 4. Neither the name of the University nor the names of its contributors | |
| 23 | * may be used to endorse or promote products derived from this software | |
| 24 | * without specific prior written permission. | |
| 25 | * | |
| 26 | * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND | |
| 27 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
| 28 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
| 29 | * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE | |
| 30 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |
| 31 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | |
| 32 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | |
| 33 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | |
| 34 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | |
| 35 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |
| 36 | * SUCH DAMAGE. | |
| 37 | * | |
| 38 | * @(#)time.h 8.3 (Berkeley) 1/21/94 | |
| 39 | */ | |
| 40 | ||
| 41 | #ifndef _TIME_H_ | |
| 42 | #define _TIME_H_ | |
| 43 | ||
| 62a16a89 HT |
44 | #include <sys/cdefs.h> |
| 45 | ||
| e2565a42 | 46 | #include <machine/stdint.h> |
| e2565a42 | 47 | #include <machine/uvparam.h> |
| 984263bc MD |
48 | #include <sys/_posix.h> |
| 49 | ||
| 62a16a89 | 50 | #if __POSIX_VISIBLE > 0 && __POSIX_VISIBLE < 200112 || __BSD_VISIBLE |
| 984263bc MD |
51 | /* |
| 52 | * Frequency of the clock ticks reported by times(). Deprecated - use | |
| 62a16a89 | 53 | * sysconf(_SC_CLK_TCK) instead. (Removed in 1003.1-2001.) |
| 984263bc MD |
54 | */ |
| 55 | #define CLK_TCK _BSD_CLK_TCK_ | |
| 56 | #endif | |
| 57 | ||
| 58 | /* Frequency of the clock ticks reported by clock(). */ | |
| 59 | #define CLOCKS_PER_SEC _BSD_CLOCKS_PER_SEC_ | |
| 60 | ||
| e4dcda4d | 61 | #include <sys/_null.h> |
| 984263bc | 62 | |
| a81b3ef3 JR |
63 | #ifndef _CLOCK_T_DECLARED |
| 64 | #define _CLOCK_T_DECLARED | |
| e2565a42 | 65 | typedef __clock_t clock_t; |
| 984263bc MD |
66 | #endif |
| 67 | ||
| a81b3ef3 JR |
68 | #ifndef _TIME_T_DECLARED |
| 69 | #define _TIME_T_DECLARED | |
| e2565a42 | 70 | typedef __time_t time_t; |
| 984263bc MD |
71 | #endif |
| 72 | ||
| 62a16a89 HT |
73 | #ifndef _SIZE_T_DECLARED |
| 74 | #define _SIZE_T_DECLARED | |
| 75 | typedef __size_t size_t; | |
| 76 | #endif | |
| 77 | ||
| 78 | #if __POSIX_VISIBLE >= 199309 | |
| 984263bc MD |
79 | /* |
| 80 | * New in POSIX 1003.1b-1993. | |
| 81 | */ | |
| a81b3ef3 JR |
82 | #ifndef _CLOCKID_T_DECLARED |
| 83 | #define _CLOCKID_T_DECLARED | |
| e2565a42 | 84 | typedef __clockid_t clockid_t; |
| 984263bc MD |
85 | #endif |
| 86 | ||
| a81b3ef3 JR |
87 | #ifndef _TIMER_T_DECLARED |
| 88 | #define _TIMER_T_DECLARED | |
| e2565a42 | 89 | typedef __timer_t timer_t; |
| 984263bc MD |
90 | #endif |
| 91 | ||
| 1d3685c4 SS |
92 | #include <sys/_timespec.h> |
| 93 | ||
| 62a16a89 HT |
94 | #endif /* __POSIX_VISIBLE >= 199309 */ |
| 95 | ||
| 96 | /* These macros are also in sys/time.h. */ | |
| 97 | #if !defined(CLOCK_REALTIME) && __POSIX_VISIBLE >= 200112 | |
| 91810a6f | 98 | #define CLOCK_REALTIME 0 |
| 62a16a89 | 99 | #ifdef __BSD_VISIBLE |
| 91810a6f MD |
100 | #define CLOCK_VIRTUAL 1 |
| 101 | #define CLOCK_PROF 2 | |
| 62a16a89 | 102 | #endif |
| 91810a6f MD |
103 | #define CLOCK_MONOTONIC 4 /* from freebsd */ |
| 104 | #define CLOCK_UPTIME 5 /* from freebsd */ | |
| 105 | #define CLOCK_UPTIME_PRECISE 7 /* from freebsd */ | |
| 106 | #define CLOCK_UPTIME_FAST 8 /* from freebsd */ | |
| 107 | #define CLOCK_REALTIME_PRECISE 9 /* from freebsd */ | |
| 108 | #define CLOCK_REALTIME_FAST 10 /* from freebsd */ | |
| 109 | #define CLOCK_MONOTONIC_PRECISE 11 /* from freebsd */ | |
| 110 | #define CLOCK_MONOTONIC_FAST 12 /* from freebsd */ | |
| 111 | #define CLOCK_SECOND 13 /* from freebsd */ | |
| 112 | ||
| 62a16a89 HT |
113 | #endif /* !defined(CLOCK_REALTIME) && __POSIX_VISIBLE >= 200112 */ |
| 114 | ||
| 115 | #if !defined(TIMER_ABSTIME) && __POSIX_VISIBLE >= 200112 | |
| 116 | #if __BSD_VISIBLE | |
| 117 | #define TIMER_RELTIME 0x0 /* relative timer */ | |
| 118 | #endif | |
| 119 | #define TIMER_ABSTIME 0x1 /* absolute timer */ | |
| 120 | #endif | |
| 984263bc MD |
121 | |
| 122 | struct tm { | |
| 123 | int tm_sec; /* seconds after the minute [0-60] */ | |
| 124 | int tm_min; /* minutes after the hour [0-59] */ | |
| 125 | int tm_hour; /* hours since midnight [0-23] */ | |
| 126 | int tm_mday; /* day of the month [1-31] */ | |
| 127 | int tm_mon; /* months since January [0-11] */ | |
| 128 | int tm_year; /* years since 1900 */ | |
| 129 | int tm_wday; /* days since Sunday [0-6] */ | |
| 130 | int tm_yday; /* days since January 1 [0-365] */ | |
| 131 | int tm_isdst; /* Daylight Savings Time flag */ | |
| 132 | long tm_gmtoff; /* offset from CUT in seconds */ | |
| 133 | char *tm_zone; /* timezone abbreviation */ | |
| 134 | }; | |
| 135 | ||
| 62a16a89 | 136 | #if __POSIX_VISIBLE |
| 984263bc MD |
137 | extern char *tzname[]; |
| 138 | #endif | |
| 139 | ||
| 140 | __BEGIN_DECLS | |
| 7c4af8e1 MD |
141 | char *asctime (const struct tm *); |
| 142 | clock_t clock (void); | |
| 143 | char *ctime (const time_t *); | |
| 144 | double difftime (time_t, time_t); | |
| 145 | struct tm *gmtime (const time_t *); | |
| 146 | struct tm *localtime (const time_t *); | |
| 147 | time_t mktime (struct tm *); | |
| dfcdc868 PA |
148 | size_t strftime (char * __restrict, size_t, const char * __restrict, |
| 149 | const struct tm * __restrict); | |
| 7c4af8e1 | 150 | time_t time (time_t *); |
| 984263bc | 151 | |
| 62a16a89 | 152 | #if __POSIX_VISIBLE |
| 7c4af8e1 | 153 | void tzset (void); |
| 62a16a89 | 154 | #endif |
| 984263bc | 155 | |
| 62a16a89 | 156 | #if __POSIX_VISIBLE >= 199506 |
| 7c4af8e1 MD |
157 | char *asctime_r (const struct tm *, char *); |
| 158 | char *ctime_r (const time_t *, char *); | |
| 159 | struct tm *gmtime_r (const time_t *, struct tm *); | |
| 160 | struct tm *localtime_r (const time_t *, struct tm *); | |
| 62a16a89 | 161 | #endif |
| 984263bc | 162 | |
| 62a16a89 | 163 | #if __POSIX_VISIBLE >= 199309 |
| 984263bc | 164 | /* Introduced in POSIX 1003.1b-1993, not part of 1003.1-1990. */ |
| 7c4af8e1 MD |
165 | int clock_getres (clockid_t, struct timespec *); |
| 166 | int clock_gettime (clockid_t, struct timespec *); | |
| 167 | int clock_settime (clockid_t, const struct timespec *); | |
| 168 | int nanosleep (const struct timespec *, struct timespec *); | |
| 62a16a89 HT |
169 | #endif /* __POSIX_VISIBLE >= 199309 */ |
| 170 | ||
| 171 | #if __XSI_VISIBLE | |
| 7d013f97 PA |
172 | extern int daylight; |
| 173 | extern long timezone; | |
| dfcdc868 PA |
174 | char *strptime (const char * __restrict, const char * __restrict, |
| 175 | struct tm * __restrict); | |
| 62a16a89 HT |
176 | #endif |
| 177 | ||
| 178 | #if __BSD_VISIBLE | |
| 62a16a89 HT |
179 | void tzsetwall (void); |
| 180 | time_t timelocal (struct tm * const); | |
| 181 | time_t timegm (struct tm * const); | |
| 182 | #endif /* __BSD_VISIBLE */ | |
| 984263bc MD |
183 | __END_DECLS |
| 184 | ||
| 185 | #endif /* !_TIME_H_ */ |