summaryrefslogtreecommitdiff
path: root/StdLib/Include/time.h
diff options
context:
space:
mode:
Diffstat (limited to 'StdLib/Include/time.h')
-rw-r--r--StdLib/Include/time.h434
1 files changed, 0 insertions, 434 deletions
diff --git a/StdLib/Include/time.h b/StdLib/Include/time.h
deleted file mode 100644
index ecef1e2f61..0000000000
--- a/StdLib/Include/time.h
+++ /dev/null
@@ -1,434 +0,0 @@
-/** @file
- The header <time.h> defines two macros, and declares several types and
- functions for manipulating time. Many functions deal with a calendar time
- that represents the current date (according to the Gregorian calendar) and
- time. Some functions deal with local time, which is the calendar time
- expressed for some specific time zone, and with Daylight Saving Time, which
- is a temporary change in the algorithm for determining local time. The local
- time zone and Daylight Saving Time are implementation-defined.
-
- The macros defined are NULL; and CLOCKS_PER_SEC which expands to an
- expression with type clock_t (described below) that is the number per second
- of the value returned by the clock function.
-
- The types declared are size_t along with clock_t and time_t which are
- arithmetic types capable of representing times; and struct tm which holds
- the components of a calendar time, called the broken-down time.
-
- The range and precision of times representable in clock_t and time_t are
- implementation-defined. The tm structure shall contain at least the following
- members, in any order. The semantics of the members and their normal ranges
- are expressed in the comments.
- - int tm_sec; // seconds after the minute - [0, 60]
- - int tm_min; // minutes after the hour - [0, 59]
- - int tm_hour; // hours since midnight - [0, 23]
- - int tm_mday; // day of the month - [1, 31]
- - int tm_mon; // months since January - [0, 11]
- - int tm_year; // years since 1900
- - int tm_wday; // days since Sunday - [0, 6]
- - int tm_yday; // days since January 1 - [0, 365]
- - int tm_isdst; // Daylight Saving Time flag
-
- The value of tm_isdst is positive if Daylight Saving Time is in effect, zero
- if Daylight Saving Time is not in effect, and negative if the information
- is not available.
-
- The following macros are defined in this file:<BR>
- @verbatim
- NULL
- CLOCKS_PER_SEC The number of values per second returned by the clock function.
- @endverbatim
-
- The following types are defined in this file:<BR>
- @verbatim
- size_t Unsigned integer type of the result of the sizeof operator.
- clock_t Arithmetic type capable of representing a time from the clock function.
- time_t Arithmetic type capable of representing a time.
- struct tm Holds the components of a calendar time; or broken-down time.
- @endverbatim
-
- The following functions are declared in this file:<BR>
- @verbatim
- ############### Time Manipulation Functions
- clock_t clock (void);
- double difftime (time_t time1, time_t time0);
- time_t mktime (struct tm *timeptr);
- time_t time (time_t *timer);
-
- ################# Time Conversion Functions
- char * asctime (const struct tm *timeptr);
- char * ctime (const time_t *timer);
- struct tm * gmtime (const time_t *timer);
- time_t timegm (struct tm*);
- struct tm * localtime (const time_t *timer);
- size_t strftime (char * __restrict s, size_t maxsize,
- const char * __restrict format,
- const struct tm * __restrict timeptr);
- char * strptime (const char *, const char * format, struct tm*);
- @endverbatim
-
- Copyright (c) 2010 - 2011, 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.
-
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-**/
-#ifndef _TIME_H
-#define _TIME_H
-#include <sys/EfiCdefs.h>
-
-#define CLOCKS_PER_SEC __getCPS()
-
-#ifdef _EFI_SIZE_T_
- typedef _EFI_SIZE_T_ size_t;
- #undef _EFI_SIZE_T_
- #undef _BSD_SIZE_T_
-#endif
-
-#ifdef _EFI_CLOCK_T
- /** An arithmetic type capable of representing values returned by clock(); **/
- typedef _EFI_CLOCK_T clock_t;
- #undef _EFI_CLOCK_T
-#endif
-
-#ifdef _EFI_TIME_T
- /** An arithmetic type capable of representing values returned as calendar time
- values, such as that returned by mktime();
- **/
- typedef _EFI_TIME_T time_t;
- #undef _EFI_TIME_T
-#endif
-
-/** Value added to tm_year to get the full year value. TM_YEAR_BASE + 110 --> 2010 **/
-#define TM_YEAR_BASE 1900
-
-/** @{
- Values for the tm_wday member of struct tm.
-**/
-#define TM_SUNDAY 0
-#define TM_MONDAY 1
-#define TM_TUESDAY 2
-#define TM_WEDNESDAY 3
-#define TM_THURSDAY 4
-#define TM_FRIDAY 5
-#define TM_SATURDAY 6
-/*@}*/
-
-/** @{
- Values for the tm_mon member of struct tm.
-**/
-#define TM_JANUARY 0
-#define TM_FEBRUARY 1
-#define TM_MARCH 2
-#define TM_APRIL 3
-#define TM_MAY 4
-#define TM_JUNE 5
-#define TM_JULY 6
-#define TM_AUGUST 7
-#define TM_SEPTEMBER 8
-#define TM_OCTOBER 9
-#define TM_NOVEMBER 10
-#define TM_DECEMBER 11
-/*@}*/
-
-/** A structure holding the components of a calendar time, called the
- broken-down time. The first nine (9) members are as mandated by the
- C95 standard. Additional fields have been added for EFI support.
-**/
-struct tm {
- int tm_year; // years since 1900
- int tm_mon; // months since January [0, 11]
- int tm_mday; // day of the month [1, 31]
- int tm_hour; // hours since midnight [0, 23]
- int tm_min; // minutes after the hour [0, 59]
- int tm_sec; // seconds after the minute [0, 60]
- int tm_wday; // days since Sunday [0, 6]
- int tm_yday; // days since January 1 [0, 365]
- int tm_isdst; // Daylight Saving Time flag
- int tm_zoneoff; // EFI TimeZone offset, -1440 to 1440 or 2047
- int tm_daylight; // EFI Daylight flags
- UINT32 tm_Nano; // EFI Nanosecond value
-};
-
-/* ############### Time Manipulation Functions ########################## */
-
-/** The clock function determines the processor time used.
-
- @return The clock function returns the implementation's best
- approximation to the processor time used by the program since the
- beginning of an implementation-defined era related only to the
- program invocation. To determine the time in seconds, the value
- returned by the clock function should be divided by the value of
- the macro CLOCKS_PER_SEC. If the processor time used is not
- available or its value cannot be represented, the function
- returns the value (clock_t)(-1).
-**/
-clock_t clock(void);
-
-/** Compute the difference between two calendar times: time1 - time0.
-
- @param[in] time1 An arithmetic calendar time.
- @param[in] time2 Another arithmetic calendar time.
-
- @return The difference between the two times expressed in seconds.
-**/
-double difftime(time_t time1, time_t time0);
-
-/** Convert a broken-down time into an arithmetic calendar time.
-
- The mktime function converts the broken-down time, expressed as local time,
- in the structure pointed to by timeptr into a calendar time value with the
- same encoding as that of the values returned by the time function. The
- original values of the tm_wday and tm_yday components of the structure are
- ignored, and the original values of the other components are not
- restricted to the ranges indicated above. On successful completion,
- the values of the tm_wday and tm_yday components of the structure are set
- appropriately, and the other components are set to represent the specified
- calendar time, but with their values forced to the ranges indicated above;
- the final value of tm_mday is not set until tm_mon and tm_year
- are determined.
-
- @param[in] timeptr Pointer to a broken-down time to be converted.
-
- @return The mktime function returns the specified calendar time encoded
- as a value of type time_t. If the calendar time cannot be
- represented, the function returns the value (time_t)(-1).
-**/
-time_t mktime(struct tm *timeptr);
-
-/** The time function determines the current calendar time.
-
- The encoding of the value is unspecified and undocumented.
-
- @param[out] timer An optional pointer to an object in which to
- store the calendar time.
-
- @return The time function returns the implementation's best approximation
- of the current calendar time. The value (time_t)(-1) is returned
- if the calendar time is not available. If timer is not a null
- pointer, the return value is also assigned to the object it
- points to.
-**/
-time_t time(time_t *timer);
-
-/* ################# Time Conversion Functions ########################## */
-
-/** The asctime function converts the broken-down time in the structure pointed
- to by timeptr into a string in the form<BR>
- @verbatim
- Sun Sep 16 01:03:52 1973\n\0
- @endverbatim
-
- @param[in] timeptr A pointer to a broken-down time to convert.
-
- @return The asctime function returns a pointer to the string.
-**/
-char * asctime(const struct tm *timeptr);
-
-/** The ctime function converts the calendar time pointed to by timer to a local
- time in the form of a string. It is equivalent to asctime(localtime(timer))
-
- @param[in] timer Pointer to a calendar time value to convert into a
- string representation.
-
- @return The ctime function returns the pointer returned by the asctime
- function with that broken-down time as argument.
-**/
-char * ctime(const time_t *timer);
-
-/** The gmtime function converts the calendar time pointed to by timer into a
- broken-down time, expressed as UTC.
-
- @param[in] timer Pointer to a calendar time value to convert into a
- broken-down time.
-
- @return The gmtime function returns a pointer to the broken-down time,
- or a null pointer if the specified time cannot be converted to UTC.
-**/
-struct tm * gmtime(const time_t *timer);
-
-/** The timegm function is the opposite of gmtime.
-
- @param[in] tm Pointer to a broken-down time to convert into a
- calendar time.
-
- @return The calendar time expressed as UTC.
-**/
-time_t timegm(struct tm*);
-
-/** The localtime function converts the calendar time pointed to by timer into
- a broken-down time, expressed as local time.
-
- @param[in] timer Pointer to a calendar time value to be converted.
-
- @return The localtime function returns a pointer to the broken-down time,
- or a null pointer if the specified time cannot be converted to
- local time.
-**/
-struct tm * localtime(const time_t *timer);
-
-/** The strftime function places characters into the array pointed to by s as
- controlled by the string pointed to by format. The format shall be a
- multibyte character sequence, beginning and ending in its initial shift
- state. The format string consists of zero or more conversion specifiers
- and ordinary multibyte characters. A conversion specifier consists of
- a % character, possibly followed by an E or O modifier character
- (described below), followed by a character that determines the behavior of
- the conversion specifier.
-
- All ordinary multibyte characters (including the terminating null
- character) are copied unchanged into the array. If copying takes place
- between objects that overlap, the behavior is undefined. No more than
- maxsize characters are placed into the array. 3 Each conversion specifier
- is replaced by appropriate characters as described in the following list.
- The appropriate characters are determined using the LC_TIME category of
- the current locale and by the values of zero or more members of the
- broken-down time structure pointed to by timeptr, as specified in brackets
- in the description. If any of the specified values is outside the normal
- range, the characters stored are unspecified.
-
- %a is replaced by the locale's abbreviated weekday name. [tm_wday]
- %A is replaced by the locale's full weekday name. [tm_wday]
- %b is replaced by the locale's abbreviated month name. [tm_mon]
- %B is replaced by the locale's full month name. [tm_mon]
- %c is replaced by the locale's appropriate date and time representation.
- %C is replaced by the year divided by 100 and truncated to an integer,
- as a decimal number (00-99). [tm_year]
- %d is replaced by the day of the month as a decimal number (01-31). [tm_mday]
- %D is equivalent to "%m/%d/%y". [tm_mon, tm_mday, tm_year]
- %e is replaced by the day of the month as a decimal number (1-31);
- a single digit is preceded by a space. [tm_mday]
- %F is equivalent to "%Y-%m-%d" (the ISO 8601 date format).
- [tm_year, tm_mon, tm_mday]
- %g is replaced by the last 2 digits of the week-based year (see below) as
- a decimal number (00-99). [tm_year, tm_wday, tm_yday]
- %G is replaced by the week-based year (see below) as a decimal number
- (e.g., 1997). [tm_year, tm_wday, tm_yday]
- %h is equivalent to "%b". [tm_mon]
- %H is replaced by the hour (24-hour clock) as a decimal number (00-23). [tm_hour]
- %I is replaced by the hour (12-hour clock) as a decimal number (01-12). [tm_hour]
- %j is replaced by the day of the year as a decimal number (001-366). [tm_yday]
- %m is replaced by the month as a decimal number (01-12). [tm_mon]
- %M is replaced by the minute as a decimal number (00-59). [tm_min]
- %n is replaced by a new-line character.
- %p is replaced by the locale's equivalent of the AM/PM designations
- associated with a 12-hour clock. [tm_hour]
- %r is replaced by the locale's 12-hour clock time. [tm_hour, tm_min, tm_sec]
- %R is equivalent to "%H:%M". [tm_hour, tm_min]
- %S is replaced by the second as a decimal number (00-60). [tm_sec]
- %t is replaced by a horizontal-tab character.
- %T is equivalent to "%H:%M:%S" (the ISO 8601 time format).
- [tm_hour, tm_min, tm_sec]
- %u is replaced by the ISO 8601 weekday as a decimal number (1-7),
- where Monday is 1. [tm_wday]
- %U is replaced by the week number of the year (the first Sunday as the
- first day of week 1) as a decimal number (00-53). [tm_year, tm_wday, tm_yday]
- %V is replaced by the ISO 8601 week number (see below) as a decimal number
- (01-53). [tm_year, tm_wday, tm_yday]
- %w is replaced by the weekday as a decimal number (0-6), where Sunday is 0.
- [tm_wday]
- %W is replaced by the week number of the year (the first Monday as the
- first day of week 1) as a decimal number (00-53). [tm_year, tm_wday, tm_yday]
- %x is replaced by the locale's appropriate date representation.
- %X is replaced by the locale's appropriate time representation.
- %y is replaced by the last 2 digits of the year as a decimal
- number (00-99). [tm_year]
- %Y is replaced by the year as a decimal number (e.g., 1997). [tm_year]
- %z is replaced by the offset from UTC in the ISO 8601 format "-0430"
- (meaning 4 hours 30 minutes behind UTC, west of Greenwich), or by no
- characters if no time zone is determinable. [tm_isdst]
- %Z is replaced by the locale's time zone name or abbreviation, or by no
- characters if no time zone is determinable. [tm_isdst]
- %% is replaced by %.
-
- Some conversion specifiers can be modified by the inclusion of an E or O
- modifier character to indicate an alternative format or specification.
- If the alternative format or specification does not exist for the current
- locale, the modifier is ignored. %Ec is replaced by the locale's
- alternative date and time representation.
-
- %EC is replaced by the name of the base year (period) in the locale's
- alternative representation.
- %Ex is replaced by the locale's alternative date representation.
- %EX is replaced by the locale's alternative time representation.
- %Ey is replaced by the offset from %EC (year only) in the locale's
- alternative representation.
- %EY is replaced by the locale's full alternative year representation.
- %Od is replaced by the day of the month, using the locale's alternative
- numeric symbols (filled as needed with leading zeros, or with leading
- spaces if there is no alternative symbol for zero).
- %Oe is replaced by the day of the month, using the locale's alternative
- numeric symbols (filled as needed with leading spaces).
- %OH is replaced by the hour (24-hour clock), using the locale's
- alternative numeric symbols.
- %OI is replaced by the hour (12-hour clock), using the locale's
- alternative numeric symbols.
- %Om is replaced by the month, using the locale's alternative numeric symbols.
- %OM is replaced by the minutes, using the locale's alternative numeric symbols.
- %OS is replaced by the seconds, using the locale's alternative numeric symbols.
- %Ou is replaced by the ISO 8601 weekday as a number in the locale's
- alternative representation, where Monday is 1.
- %OU is replaced by the week number, using the locale's alternative numeric symbols.
- %OV is replaced by the ISO 8601 week number, using the locale's alternative
- numeric symbols.
- %Ow is replaced by the weekday as a number, using the locale's alternative
- numeric symbols.
- %OW is replaced by the week number of the year, using the locale's
- alternative numeric symbols.
- %Oy is replaced by the last 2 digits of the year, using the locale's
- alternative numeric symbols.
-
- %g, %G, and %V give values according to the ISO 8601 week-based year. In
- this system, weeks begin on a Monday and week 1 of the year is the week
- that includes January 4th, which is also the week that includes the first
- Thursday of the year, and is also the first week that contains at least
- four days in the year. If the first Monday of January is the 2nd, 3rd, or
- 4th, the preceding days are part of the last week of the preceding year;
- thus, for Saturday 2nd January 1999, %G is replaced by 1998 and %V is
- replaced by 53. If December 29th, 30th, or 31st is a Monday, it and any
- following days are part of week 1 of the following year. Thus, for Tuesday
- 30th December 1997, %G is replaced by 1998 and %V is replaced by 01.
-
- If a conversion specifier is not one of the above, the behavior is undefined.
-
- In the "C" locale, the E and O modifiers are ignored and the replacement
- strings for the following specifiers are:
- %a the first three characters of %A.
- %A one of "Sunday", "Monday", ... , "Saturday".
- %b the first three characters of %B.
- %B one of "January", "February", ... , "December".
- %c equivalent to "%a %b %e %T %Y".
- %p one of "AM" or "PM".
- %r equivalent to "%I:%M:%S %p".
- %x equivalent to "%m/%d/%y".
- %X equivalent to %T.
- %Z implementation-defined.
-
- @param s Pointer to the buffer in which to store the result.
- @param maxsize Maximum number of characters to put into buffer s.
- @param format Format string, as described above.
- @param timeptr Pointer to a broken-down time structure containing the
- time to format.
-
- @return If the total number of resulting characters including the
- terminating null character is not more than maxsize, the
- strftime function returns the number of characters placed into
- the array pointed to by s not including the terminating null
- character. Otherwise, zero is returned and the contents of the
- array are indeterminate.
-**/
-size_t strftime( char * __restrict s, size_t maxsize,
- const char * __restrict format,
- const struct tm * __restrict timeptr);
-
-char *strptime(const char *, const char * format, struct tm*);
-
-
-/* ################# Implementation Functions ########################### */
-
-clock_t __getCPS(void);
-
-#endif /* _TIME_H */