summaryrefslogtreecommitdiff
path: root/StdLib/LibC/Time/TimeVals.h
diff options
context:
space:
mode:
Diffstat (limited to 'StdLib/LibC/Time/TimeVals.h')
-rw-r--r--StdLib/LibC/Time/TimeVals.h117
1 files changed, 117 insertions, 0 deletions
diff --git a/StdLib/LibC/Time/TimeVals.h b/StdLib/LibC/Time/TimeVals.h
new file mode 100644
index 0000000000..72827f9a91
--- /dev/null
+++ b/StdLib/LibC/Time/TimeVals.h
@@ -0,0 +1,117 @@
+/** @file
+ Definitions private to the Implementation of <time.h>.
+
+ Copyright (c) 2010, Intel Corporation. All rights reserved.<BR>
+ This program and the accompanying materials are licensed and made available under
+ the terms and conditions of the BSD License that accompanies this distribution.
+ The full text of the license may be found at
+ http://opensource.org/licenses/bsd-license.php.
+
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+ Portions derived from the NIH time zone package files,
+ which contain the following notice:
+
+ This file is in the public domain, so clarified as of
+ 1996-06-05 by Arthur David Olson (arthur_david_olson@nih.gov).
+**/
+#ifndef _TIMEVAL_H
+#define _TIMEVAL_H
+
+extern struct state * lclptr;
+extern struct state * gmtptr;
+extern char * tzname[2];
+extern const char gmt[4];
+extern const char wildabbr[9];
+extern const int year_lengths[2];
+extern const int mon_lengths[2][MONSPERYEAR];
+extern long int timezone;
+extern int daylight;
+
+#define EFI_UNSPECIFIED_TIMEZONE 0x07FF
+
+/*
+** The DST rules to use if TZ has no rules and we can't load TZDEFRULES.
+** We default to US rules as of 1999-08-17.
+** POSIX 1003.1 section 8.1.1 says that the default DST rules are
+** implementation dependent; for historical reasons, US rules are a
+** common default.
+*/
+#ifndef TZDEFRULESTRING
+#define TZDEFRULESTRING ",M4.1.0,M10.5.0"
+#endif
+
+// Facilities for external time-zone definition files do not currently exist
+#define NO_ZONEINFO_FILES
+
+#define EPOCH_DAY 5
+#define DAY_TO_uSEC 86400000000
+
+/* Rule type values for the r_type member of a rule structure */
+#define JULIAN_DAY 0 /* Jn - Julian day */
+#define DAY_OF_YEAR 1 /* n - day of year */
+#define MONTH_NTH_DAY_OF_WEEK 2 /* Mm.n.d - month, week, day of week */
+
+#ifdef TZNAME_MAX
+ #define MY_TZNAME_MAX TZNAME_MAX
+#endif /* defined TZNAME_MAX */
+
+#ifndef TZNAME_MAX
+ #define MY_TZNAME_MAX 255
+#endif /* !defined TZNAME_MAX */
+
+/* Unlike <ctype.h>'s isdigit, this also works if c < 0 | c > UCHAR_MAX. */
+#define is_digit(c) ((unsigned)(c) - '0' <= 9)
+
+#define LEAPS_THRU_END_OF(y) ((y) / 4 - (y) / 100 + (y) / 400)
+
+#define BIGGEST(a, b) (((a) > (b)) ? (a) : (b))
+
+#ifndef INITIALIZE
+#define INITIALIZE(x) ((x) = 0)
+#endif /* !defined INITIALIZE */
+
+struct ttinfo { /* time type information */
+ LONG32 tt_gmtoff; /* UTC offset in seconds */
+ int tt_isdst; /* used to set tm_isdst */
+ int tt_abbrind; /* abbreviation list index */
+ int tt_ttisstd; /* TRUE if transition is std time */
+ int tt_ttisgmt; /* TRUE if transition is UTC */
+};
+
+struct lsinfo { /* leap second information */
+ time_t ls_trans; /* transition time */
+ LONG32 ls_corr; /* correction to apply */
+};
+
+struct state {
+ int leapcnt;
+ int timecnt;
+ int typecnt;
+ int charcnt;
+ time_t ats[TZ_MAX_TIMES];
+ unsigned char types[TZ_MAX_TIMES];
+ struct ttinfo ttis[TZ_MAX_TYPES];
+ char chars[BIGGEST(BIGGEST(TZ_MAX_CHARS + 1, sizeof gmt), (2 * (MY_TZNAME_MAX + 1)))];
+ struct lsinfo lsis[TZ_MAX_LEAPS];
+};
+
+struct rule {
+ int r_type; /* type of rule--see below */
+ int r_day; /* day number of rule */
+ int r_week; /* week number of rule */
+ int r_mon; /* month number of rule */
+ LONG32 r_time; /* transition time of rule */
+};
+
+#define JULIAN_DAY 0 /* Jn - Julian day */
+#define DAY_OF_YEAR 1 /* n - day of year */
+#define MONTH_NTH_DAY_OF_WEEK 2 /* Mm.n.d - month, week, day of week */
+
+__BEGIN_DECLS
+extern void EFIAPI gmtload(struct state * const sp);
+extern void EFIAPI tzset(void);
+__END_DECLS
+
+#endif /* _TIMEVAL_H */