xref: /minix3/include/time.h (revision 68db8ed0b9600e11489ca631e7ea24a6f5adb15f)
1 /* The <time.h> header is used by the procedures that deal with time.
2  * Handling time is surprisingly complicated, what with GMT, local time
3  * and other factors.  Although the Bishop of Ussher (1581-1656) once
4  * calculated that based on the Bible, the world began on 12 Oct. 4004 BC
5  * at 9 o'clock in the morning, in the UNIX world time begins at midnight,
6  * 1 Jan. 1970 GMT.  Before that, all was NULL and (void).
7  */
8 
9 #ifndef _TIME_H
10 #define _TIME_H
11 
12 #define CLOCKS_PER_SEC    60
13 
14 #ifdef _POSIX_SOURCE
15 #define CLK_TCK CLOCKS_PER_SEC	/* obsolescent mame for CLOCKS_PER_SEC */
16 #endif
17 
18 #define NULL    ((void *)0)
19 
20 #ifndef _SIZE_T
21 #define _SIZE_T
22 typedef unsigned int size_t;
23 #endif
24 
25 #ifndef _TIME_T
26 #define _TIME_T
27 typedef long time_t;		/* time in sec since 1 Jan 1970 0000 GMT */
28 #endif
29 
30 #ifndef _CLOCK_T
31 #define _CLOCK_T
32 typedef long clock_t;		/* time in ticks since process started */
33 #endif
34 
35 struct tm {
36   int tm_sec;			/* seconds after the minute [0, 59] */
37   int tm_min;			/* minutes after the hour [0, 59] */
38   int tm_hour;			/* hours since midnight [0, 23] */
39   int tm_mday;			/* day of the month [1, 31] */
40   int tm_mon;			/* months since January [0, 11] */
41   int tm_year;			/* years since 1900 */
42   int tm_wday;			/* days since Sunday [0, 6] */
43   int tm_yday;			/* days since January 1 [0, 365] */
44   int tm_isdst;			/* Daylight Saving Time flag */
45 };
46 
47 extern char *tzname[];
48 
49 /* Function Prototypes. */
50 #ifndef _ANSI_H
51 #include <ansi.h>
52 #endif
53 
54 _PROTOTYPE( clock_t clock, (void)					);
55 _PROTOTYPE( double difftime, (time_t _time1, time_t _time0)		);
56 _PROTOTYPE( time_t mktime, (struct tm *_timeptr)			);
57 _PROTOTYPE( time_t time, (time_t *_timeptr)				);
58 _PROTOTYPE( char *asctime, (const struct tm *_timeptr)			);
59 _PROTOTYPE( char *asctime_r, (const struct tm *_timeptr, char *buf)			);
60 _PROTOTYPE( char *ctime, (const time_t *_timer)				);
61 _PROTOTYPE( char *ctime_r, (const time_t *_timer, char *buf)			);
62 _PROTOTYPE( struct tm *gmtime, (const time_t *_timer)			);
63 _PROTOTYPE( struct tm *gmtime_r, (const time_t *_timer,struct tm *tmp)			);
64 _PROTOTYPE( struct tm *localtime, (const time_t *_timer)		);
65 _PROTOTYPE( struct tm *localtime_r, (const time_t *const timep,
66 					struct tm *tmp)			);
67 _PROTOTYPE( size_t strftime, (char *_s, size_t _max, const char *_fmt,
68 				const struct tm *_timep)		);
69 _PROTOTYPE( char *strptime, (const char *buf, const char *format,
70 				struct tm *timeptr)			);
71 _PROTOTYPE( time_t timegm, (struct tm * const tmp)			);
72 
73 
74 #ifdef _POSIX_SOURCE
75 _PROTOTYPE( void tzset, (void)						);
76 #endif
77 
78 #ifdef _MINIX
79 _PROTOTYPE( int stime, (time_t *_top)					);
80 #endif
81 
82 extern long timezone;
83 
84 #ifdef _POSIX_SOURCE
85 struct timespec
86 {
87 	time_t tv_sec;
88 	long tv_nsec;
89 };
90 
91 int nanosleep(const struct timespec *rqtp, struct timespec *rmtp);
92 #endif
93 
94 #endif /* _TIME_H */
95