]> git.saurik.com Git - apple/libc.git/blobdiff - include/time.h
Libc-1439.100.3.tar.gz
[apple/libc.git] / include / time.h
index accf7486e7cf2d0a343054b23cd3994addfed8fb..100945b5cc9657afabcc187b43e52032a573e246 100644 (file)
@@ -3,8 +3,6 @@
  *
  * @APPLE_LICENSE_HEADER_START@
  * 
- * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
- * 
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
  * Version 2.0 (the 'License'). You may not use this file except in
 #ifndef _TIME_H_
 #define        _TIME_H_
 
-#include <machine/ansi.h>
-
-#ifndef        NULL
-#define        NULL    0
-#endif
-
-#ifndef        _BSD_CLOCK_T_DEFINED_
-#define _BSD_CLOCK_T_DEFINED_
-typedef        _BSD_CLOCK_T_   clock_t;
-#endif
-
-#ifndef        _BSD_TIME_T_DEFINED_
-#define        _BSD_TIME_T_DEFINED_
-typedef        _BSD_TIME_T_    time_t;
-#endif
-
-#ifndef        _BSD_SIZE_T_DEFINED_
-#define        _BSD_SIZE_T_DEFINED_
-typedef        _BSD_SIZE_T_    size_t;
-#endif
-
-#ifndef _TIMESPEC_DECLARED           
-#define _TIMESPEC_DECLARED
-struct timespec {
-        time_t  tv_sec;         /* seconds */
-        long    tv_nsec;        /* and nanoseconds */  
-};
-#endif
+#include <_types.h>
+#include <sys/cdefs.h>
+#include <Availability.h>
+#ifndef UNIFDEF_DRIVERKIT
+#include <sys/_types/_clock_t.h>
+#include <sys/_types/_null.h>
+#include <sys/_types/_size_t.h>
+#include <sys/_types/_time_t.h>
+#include <sys/_types/_timespec.h>
 
 struct tm {
        int     tm_sec;         /* seconds after the minute [0-60] */
@@ -104,50 +83,184 @@ struct tm {
        int     tm_wday;        /* days since Sunday [0-6] */
        int     tm_yday;        /* days since January 1 [0-365] */
        int     tm_isdst;       /* Daylight Savings Time flag */
-       long    tm_gmtoff;      /* offset from CUT in seconds */
+       long    tm_gmtoff;      /* offset from UTC in seconds */
        char    *tm_zone;       /* timezone abbreviation */
 };
 
-#include <machine/limits.h>    /* Include file containing CLK_TCK. */
-
-#define CLOCKS_PER_SEC  (CLK_TCK)
+#if __DARWIN_UNIX03
+#define CLOCKS_PER_SEC  1000000        /* [XSI] */
+#else /* !__DARWIN_UNIX03 */
+#include <machine/_limits.h>   /* Include file containing CLK_TCK. */
 
-#include <sys/cdefs.h>
+#define CLOCKS_PER_SEC  (__DARWIN_CLK_TCK)
+#endif /* __DARWIN_UNIX03 */
 
 #ifndef _ANSI_SOURCE
 extern char *tzname[];
 #endif
 
+extern int getdate_err;
+#if __DARWIN_UNIX03
+//Begin-Libc
+#ifndef LIBC_ALIAS_TIMEZONE
+//End-Libc
+extern long timezone __DARWIN_ALIAS(timezone);
+//Begin-Libc
+#else /* LIBC_ALIAS_TIMEZONE */
+extern long timezone LIBC_ALIAS(timezone);
+#endif /* !LIBC_ALIAS_TIMEZONE */
+//End-Libc
+#endif /* __DARWIN_UNIX03 */
+extern int daylight;
+#endif /* UNIFDEF_DRIVERKIT */
+
 __BEGIN_DECLS
-char *asctime __P((const struct tm *));
-clock_t clock __P((void));
-char *ctime __P((const time_t *));
-double difftime __P((time_t, time_t));
-struct tm *gmtime __P((const time_t *));
-struct tm *localtime __P((const time_t *));
-time_t mktime __P((struct tm *));
-size_t strftime __P((char *, size_t, const char *, const struct tm *));
-time_t time __P((time_t *));
+#ifndef UNIFDEF_DRIVERKIT
+char *asctime(const struct tm *);
+//Begin-Libc
+#ifndef LIBC_ALIAS_CLOCK
+//End-Libc
+clock_t clock(void) __DARWIN_ALIAS(clock);
+//Begin-Libc
+#else /* LIBC_ALIAS_CLOCK */
+clock_t clock(void) LIBC_ALIAS(clock);
+#endif /* !LIBC_ALIAS_CLOCK */
+//End-Libc
+char *ctime(const time_t *);
+double difftime(time_t, time_t);
+struct tm *getdate(const char *);
+struct tm *gmtime(const time_t *);
+struct tm *localtime(const time_t *);
+//Begin-Libc
+#ifndef LIBC_ALIAS_MKTIME
+//End-Libc
+time_t mktime(struct tm *) __DARWIN_ALIAS(mktime);
+//Begin-Libc
+#else /* LIBC_ALIAS_MKTIME */
+time_t mktime(struct tm *) LIBC_ALIAS(mktime);
+#endif /* !LIBC_ALIAS_MKTIME */
+//End-Libc
+//Begin-Libc
+#ifndef LIBC_ALIAS_STRFTIME
+//End-Libc
+size_t strftime(char * __restrict, size_t, const char * __restrict, const struct tm * __restrict) __DARWIN_ALIAS(strftime);
+//Begin-Libc
+#else /* LIBC_ALIAS_STRFTIME */
+size_t strftime(char * __restrict, size_t, const char * __restrict, const struct tm * __restrict) LIBC_ALIAS(strftime);
+#endif /* !LIBC_ALIAS_STRFTIME */
+//End-Libc
+//Begin-Libc
+#ifndef LIBC_ALIAS_STRPTIME
+//End-Libc
+char *strptime(const char * __restrict, const char * __restrict, struct tm * __restrict) __DARWIN_ALIAS(strptime);
+//Begin-Libc
+#else /* LIBC_ALIAS_STRPTIME */
+char *strptime(const char * __restrict, const char * __restrict, struct tm * __restrict) LIBC_ALIAS(strptime);
+#endif /* !LIBC_ALIAS_STRPTIME */
+//End-Libc
+time_t time(time_t *);
 
 #ifndef _ANSI_SOURCE
-void tzset __P((void));
+void tzset(void);
 #endif /* not ANSI */
 
-#if !defined(_ANSI_SOURCE) && !defined(_POSIX_SOURCE)
-char *asctime_r __P((const struct tm *, char *));
-char *ctime_r __P((const time_t *, char *));
-struct tm *gmtime_r __P((const time_t *, struct tm *));
-struct tm *localtime_r __P((const time_t *, struct tm *));
-char *strptime __P((const char *, const char *, struct tm *));
-char *timezone __P((int, int));
-void tzsetwall __P((void));
-time_t timelocal __P((struct tm * const));
-time_t timegm __P((struct tm * const));
+/* [TSF] Thread safe functions */
+char *asctime_r(const struct tm * __restrict, char * __restrict);
+char *ctime_r(const time_t *, char *);
+struct tm *gmtime_r(const time_t * __restrict, struct tm * __restrict);
+struct tm *localtime_r(const time_t * __restrict, struct tm * __restrict);
+
+#if !defined(_ANSI_SOURCE) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))
+time_t posix2time(time_t);
+#if !__DARWIN_UNIX03
+char *timezone(int, int);
+#endif /* !__DARWIN_UNIX03 */
+void tzsetwall(void);
+time_t time2posix(time_t);
+time_t timelocal(struct tm * const);
+time_t timegm(struct tm * const);
 #endif /* neither ANSI nor POSIX */
 
 #if !defined(_ANSI_SOURCE)
-int nanosleep __P((const struct timespec *, struct timespec *));
+//Begin-Libc
+#ifndef LIBC_ALIAS_NANOSLEEP
+//End-Libc
+int nanosleep(const struct timespec *__rqtp, struct timespec *__rmtp) __DARWIN_ALIAS_C(nanosleep);
+//Begin-Libc
+#else /* LIBC_ALIAS_NANOSLEEP */
+int nanosleep(const struct timespec *__rqtp, struct timespec *__rmtp) LIBC_ALIAS_C(nanosleep);
+#endif /* !LIBC_ALIAS_NANOSLEEP */
+//End-Libc
+#endif
+#endif /* UNIFDEF_DRIVERKIT */
+
+#if !defined(_DARWIN_FEATURE_CLOCK_GETTIME) || _DARWIN_FEATURE_CLOCK_GETTIME != 0
+#if __DARWIN_C_LEVEL >= 199309L
+#if __has_feature(enumerator_attributes)
+#define __CLOCK_AVAILABILITY __OSX_AVAILABLE(10.12) __IOS_AVAILABLE(10.0) __TVOS_AVAILABLE(10.0) __WATCHOS_AVAILABLE(3.0)
+#else
+#define __CLOCK_AVAILABILITY
+#endif
+
+typedef enum {
+_CLOCK_REALTIME __CLOCK_AVAILABILITY = 0,
+#define CLOCK_REALTIME _CLOCK_REALTIME
+_CLOCK_MONOTONIC __CLOCK_AVAILABILITY = 6,
+#define CLOCK_MONOTONIC _CLOCK_MONOTONIC
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+_CLOCK_MONOTONIC_RAW __CLOCK_AVAILABILITY = 4,
+#define CLOCK_MONOTONIC_RAW _CLOCK_MONOTONIC_RAW
+_CLOCK_MONOTONIC_RAW_APPROX __CLOCK_AVAILABILITY = 5,
+#define CLOCK_MONOTONIC_RAW_APPROX _CLOCK_MONOTONIC_RAW_APPROX
+_CLOCK_UPTIME_RAW __CLOCK_AVAILABILITY = 8,
+#define CLOCK_UPTIME_RAW _CLOCK_UPTIME_RAW
+_CLOCK_UPTIME_RAW_APPROX __CLOCK_AVAILABILITY = 9,
+#define CLOCK_UPTIME_RAW_APPROX _CLOCK_UPTIME_RAW_APPROX
 #endif
+_CLOCK_PROCESS_CPUTIME_ID __CLOCK_AVAILABILITY = 12,
+#define CLOCK_PROCESS_CPUTIME_ID _CLOCK_PROCESS_CPUTIME_ID
+_CLOCK_THREAD_CPUTIME_ID __CLOCK_AVAILABILITY = 16
+#define CLOCK_THREAD_CPUTIME_ID _CLOCK_THREAD_CPUTIME_ID
+} clockid_t;
+
+#ifndef UNIFDEF_DRIVERKIT
+__CLOCK_AVAILABILITY
+int clock_getres(clockid_t __clock_id, struct timespec *__res);
+
+__CLOCK_AVAILABILITY
+int clock_gettime(clockid_t __clock_id, struct timespec *__tp);
+
+#endif /* UNIFDEF_DRIVERKIT */
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+__CLOCK_AVAILABILITY
+__uint64_t clock_gettime_nsec_np(clockid_t __clock_id);
+#endif
+
+#ifndef UNIFDEF_DRIVERKIT
+__OSX_AVAILABLE(10.12) __IOS_PROHIBITED
+__TVOS_PROHIBITED __WATCHOS_PROHIBITED
+int clock_settime(clockid_t __clock_id, const struct timespec *__tp);
+
+#endif /* UNIFDEF_DRIVERKIT */
+#undef __CLOCK_AVAILABILITY
+#endif /* __DARWIN_C_LEVEL */
+#endif /* _DARWIN_FEATURE_CLOCK_GETTIME */
+
+#ifndef UNIFDEF_DRIVERKIT
+#if (__DARWIN_C_LEVEL >= __DARWIN_C_FULL) || \
+        (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || \
+        (defined(__cplusplus) && __cplusplus >= 201703L)
+/* ISO/IEC 9899:201x 7.27.2.5 The timespec_get function */
+#define TIME_UTC       1       /* time elapsed since epoch */
+__API_AVAILABLE(macosx(10.15), ios(13.0), tvos(13.0), watchos(6.0))
+int timespec_get(struct timespec *ts, int base);
+#endif
+
+#endif /* UNIFDEF_DRIVERKIT */
 __END_DECLS
 
+#ifdef _USE_EXTENDED_LOCALES_
+#include <xlocale/_time.h>
+#endif /* _USE_EXTENDED_LOCALES_ */
+
 #endif /* !_TIME_H_ */