Project

General

Profile

Statistics
| Revision:

root / lab4 / .minix-src / include / time.h @ 13

History | View | Annotate | Download (8.17 KB)

1
/*        $NetBSD: time.h,v 1.44 2014/10/07 21:50:36 christos Exp $        */
2

    
3
/*
4
 * Copyright (c) 1989, 1993
5
 *        The Regents of the University of California.  All rights reserved.
6
 * (c) UNIX System Laboratories, Inc.
7
 * All or some portions of this file are derived from material licensed
8
 * to the University of California by American Telephone and Telegraph
9
 * Co. or Unix System Laboratories, Inc. and are reproduced herein with
10
 * the permission of UNIX System Laboratories, Inc.
11
 *
12
 * Redistribution and use in source and binary forms, with or without
13
 * modification, are permitted provided that the following conditions
14
 * are met:
15
 * 1. Redistributions of source code must retain the above copyright
16
 *    notice, this list of conditions and the following disclaimer.
17
 * 2. Redistributions in binary form must reproduce the above copyright
18
 *    notice, this list of conditions and the following disclaimer in the
19
 *    documentation and/or other materials provided with the distribution.
20
 * 3. Neither the name of the University nor the names of its contributors
21
 *    may be used to endorse or promote products derived from this software
22
 *    without specific prior written permission.
23
 *
24
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
25
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
28
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34
 * SUCH DAMAGE.
35
 *
36
 *        @(#)time.h        8.3 (Berkeley) 1/21/94
37
 */
38

    
39
#ifndef _TIME_H_
40
#define        _TIME_H_
41

    
42
#include <sys/cdefs.h>
43
#include <sys/featuretest.h>
44
#include <machine/ansi.h>
45

    
46
#include <sys/null.h>
47

    
48
#ifdef        _BSD_CLOCK_T_
49
typedef        _BSD_CLOCK_T_        clock_t;
50
#undef        _BSD_CLOCK_T_
51
#endif
52

    
53
#ifdef        _BSD_TIME_T_
54
typedef        _BSD_TIME_T_        time_t;
55
#undef        _BSD_TIME_T_
56
#endif
57

    
58
#ifdef        _BSD_SIZE_T_
59
typedef        _BSD_SIZE_T_        size_t;
60
#undef        _BSD_SIZE_T_
61
#endif
62

    
63
#ifdef        _BSD_CLOCKID_T_
64
typedef        _BSD_CLOCKID_T_        clockid_t;
65
#undef        _BSD_CLOCKID_T_
66
#endif
67

    
68
#ifdef        _BSD_TIMER_T_
69
typedef        _BSD_TIMER_T_        timer_t;
70
#undef        _BSD_TIMER_T_
71
#endif
72

    
73
#define CLOCKS_PER_SEC        100
74

    
75
struct tm {
76
        int        tm_sec;                /* seconds after the minute [0-61] */
77
        int        tm_min;                /* minutes after the hour [0-59] */
78
        int        tm_hour;        /* hours since midnight [0-23] */
79
        int        tm_mday;        /* day of the month [1-31] */
80
        int        tm_mon;                /* months since January [0-11] */
81
        int        tm_year;        /* years since 1900 */
82
        int        tm_wday;        /* days since Sunday [0-6] */
83
        int        tm_yday;        /* days since January 1 [0-365] */
84
        int        tm_isdst;        /* Daylight Savings Time flag */
85
        long        tm_gmtoff;        /* offset from UTC in seconds */
86
        __aconst char *tm_zone;        /* timezone abbreviation */
87
};
88

    
89
__BEGIN_DECLS
90
char *asctime(const struct tm *);
91
clock_t clock(void);
92
#ifndef __LIBC12_SOURCE__
93
char *ctime(const time_t *) __RENAME(__ctime50);
94
double difftime(time_t, time_t) __RENAME(__difftime50);
95
struct tm *gmtime(const time_t *) __RENAME(__gmtime50);
96
struct tm *localtime(const time_t *) __RENAME(__locatime50);
97
time_t time(time_t *) __RENAME(__time50);
98
time_t mktime(struct tm *) __RENAME(__mktime50);
99
#endif
100
size_t strftime(char * __restrict, size_t, const char * __restrict,
101
    const struct tm * __restrict)
102
    __attribute__((__format__(__strftime__, 3, 0)));
103

    
104
#if defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) || \
105
    defined(_NETBSD_SOURCE)
106
#ifndef __LIBC12_SOURCE__
107
/*
108
 * CLK_TCK uses libc's internal __sysconf() to retrieve the machine's
109
 * HZ. The value of _SC_CLK_TCK is 39 -- we hard code it so we do not
110
 * need to include unistd.h
111
 */
112
long __sysconf(int);
113
#define CLK_TCK                (__sysconf(39))
114
#endif
115
#endif
116

    
117
extern __aconst char *tzname[2];
118
#ifndef __LIBC12_SOURCE__
119
void tzset(void) __RENAME(__tzset50);
120
#endif
121

    
122
/*
123
 * X/Open Portability Guide >= Issue 4
124
 */
125
#if defined(_XOPEN_SOURCE) || defined(_NETBSD_SOURCE)
126
extern int daylight;
127
#ifndef __LIBC12_SOURCE__
128
extern long int timezone __RENAME(__timezone13);
129
#endif
130
char *strptime(const char * __restrict, const char * __restrict,
131
    struct tm * __restrict);
132
#endif
133

    
134
#if (defined(_XOPEN_SOURCE) && defined(_XOPEN_SOURCE_EXTENDED)) || \
135
    defined(_NETBSD_SOURCE)
136
struct tm *getdate(const char *);
137
extern int getdate_err;
138
#endif
139

    
140
#if (_POSIX_C_SOURCE - 0) >= 199309L || (_XOPEN_SOURCE - 0) >= 500 || \
141
    defined(_NETBSD_SOURCE)
142
#include <sys/time.h>                /* XXX for struct timespec */
143
struct sigevent;
144
struct itimerspec;
145
int clock_nanosleep(clockid_t, int, const struct timespec *, struct timespec *);
146
#ifndef __LIBC12_SOURCE__
147
int clock_getres(clockid_t, struct timespec *)
148
    __RENAME(__clock_getres50);
149
int clock_gettime(clockid_t, struct timespec *)
150
    __RENAME(__clock_gettime50);
151
int clock_settime(clockid_t, const struct timespec *)
152
    __RENAME(__clock_settime50);
153
int nanosleep(const struct timespec *, struct timespec *)
154
    __RENAME(__nanosleep50);
155
int timer_gettime(timer_t, struct itimerspec *) __RENAME(__timer_gettime50);
156
int timer_settime(timer_t, int, const struct itimerspec * __restrict, 
157
    struct itimerspec * __restrict) __RENAME(__timer_settime50);
158
#endif
159
int timer_create(clockid_t, struct sigevent * __restrict,
160
    timer_t * __restrict);
161
int timer_delete(timer_t);
162
int timer_getoverrun(timer_t);
163
#endif /* _POSIX_C_SOURCE >= 199309 || _XOPEN_SOURCE >= 500 || ... */
164

    
165
#if (_POSIX_C_SOURCE - 0) >= 199506L || (_XOPEN_SOURCE - 0) >= 500 || \
166
    defined(_REENTRANT) || defined(_NETBSD_SOURCE)
167
char *asctime_r(const struct tm * __restrict, char * __restrict);
168
#ifndef __LIBC12_SOURCE__
169
char *ctime_r(const time_t *, char *) __RENAME(__ctime_r50);
170
struct tm *gmtime_r(const time_t * __restrict, struct tm * __restrict)
171
    __RENAME(__gmtime_r50);
172
struct tm *localtime_r(const time_t * __restrict, struct tm * __restrict)
173
    __RENAME(__localtime_r50);
174
#endif
175
#endif
176

    
177
#if (_POSIX_C_SOURCE - 0) >= 200809L || defined(_NETBSD_SOURCE)
178
#  ifndef __LOCALE_T_DECLARED
179
typedef struct _locale                *locale_t;
180
#  define __LOCALE_T_DECLARED
181
#  endif
182
size_t strftime_l(char * __restrict, size_t, const char * __restrict,
183
    const struct tm * __restrict, locale_t)
184
    __attribute__((__format__(__strftime__, 3, 0)));
185
#endif
186

    
187
#if defined(_NETBSD_SOURCE)
188

    
189
typedef struct __state *timezone_t;
190

    
191
#ifndef __LIBC12_SOURCE__
192
time_t time2posix(time_t) __RENAME(__time2posix50);
193
time_t posix2time(time_t) __RENAME(__posix2time50);
194
time_t timegm(struct tm *) __RENAME(__timegm50);
195
time_t timeoff(struct tm *, long) __RENAME(__timeoff50);
196
time_t timelocal(struct tm *) __RENAME(__timelocal50);
197
struct tm *offtime(const time_t *, long) __RENAME(__offtime50);
198
void tzsetwall(void) __RENAME(__tzsetwall50);
199

    
200
struct tm *offtime_r(const time_t *, long, struct tm *) __RENAME(__offtime_r50);
201
struct tm *localtime_rz(timezone_t __restrict, const time_t * __restrict,
202
    struct tm * __restrict) __RENAME(__localtime_rz50);
203
char *ctime_rz(timezone_t __restrict, const time_t *, char *)
204
    __RENAME(__ctime_rz50);
205
time_t mktime_z(timezone_t __restrict, struct tm * __restrict)
206
    __RENAME(__mktime_z50);
207
time_t timelocal_z(timezone_t __restrict, struct tm *)
208
    __RENAME(__timelocal_z50);
209
time_t time2posix_z(timezone_t __restrict, time_t) __RENAME(__time2posix_z50);
210
time_t posix2time_z(timezone_t __restrict, time_t) __RENAME(__posix2time_z50);
211
timezone_t tzalloc(const char *) __RENAME(__tzalloc50);
212
void tzfree(timezone_t __restrict) __RENAME(__tzfree50);
213
const char *tzgetname(timezone_t __restrict, int) __RENAME(__tzgetname50);
214
#endif
215

    
216
size_t strftime_lz(timezone_t __restrict, char * __restrict, size_t,
217
    const char * __restrict, const struct tm * __restrict, locale_t)
218
    __attribute__((__format__(__strftime__, 4, 0)));
219
size_t strftime_z(timezone_t __restrict, char * __restrict, size_t,
220
    const char * __restrict, const struct tm * __restrict)
221
    __attribute__((__format__(__strftime__, 4, 0)));
222
char *strptime_l(const char * __restrict, const char * __restrict,
223
    struct tm * __restrict, locale_t);
224

    
225
#endif /* _NETBSD_SOURCE */
226

    
227
__END_DECLS
228

    
229
#endif /* !_TIME_H_ */