OSDN Git Service

openat*: use a static function with the different type and strong_alias_untyped
[uclinux-h8/uClibc.git] / include / time.h
index 5611def..bea5623 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-1999, 2000, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2003,2006,2009 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -55,8 +55,13 @@ __BEGIN_DECLS
 
 # include <bits/types.h>
 
 
 # include <bits/types.h>
 
+__BEGIN_NAMESPACE_STD
 /* Returned by `clock'.  */
 typedef __clock_t clock_t;
 /* Returned by `clock'.  */
 typedef __clock_t clock_t;
+__END_NAMESPACE_STD
+#if defined __USE_XOPEN || defined __USE_POSIX || defined __USE_MISC
+__USING_NAMESPACE_STD(clock_t)
+#endif
 
 #endif /* clock_t not defined and <time.h> or need clock_t.  */
 #undef __need_clock_t
 
 #endif /* clock_t not defined and <time.h> or need clock_t.  */
 #undef __need_clock_t
@@ -66,8 +71,13 @@ typedef __clock_t clock_t;
 
 # include <bits/types.h>
 
 
 # include <bits/types.h>
 
+__BEGIN_NAMESPACE_STD
 /* Returned by `time'.  */
 typedef __time_t time_t;
 /* Returned by `time'.  */
 typedef __time_t time_t;
+__END_NAMESPACE_STD
+#if defined __USE_POSIX || defined __USE_MISC || defined __USE_SVID
+__USING_NAMESPACE_STD(time_t)
+#endif
 
 #endif /* time_t not defined and <time.h> or need time_t.  */
 #undef __need_time_t
 
 #endif /* time_t not defined and <time.h> or need time_t.  */
 #undef __need_time_t
@@ -97,15 +107,19 @@ typedef __timer_t timer_t;
 #undef __need_timer_t
 
 
 #undef __need_timer_t
 
 
-#if !defined __timespec_defined && \
-    ((defined _TIME_H && defined __USE_POSIX199309) || defined __need_timespec)
+#if !defined __timespec_defined &&                             \
+    ((defined _TIME_H &&                                       \
+      (defined __USE_POSIX199309 || defined __USE_MISC)) ||    \
+      defined __need_timespec)
 # define __timespec_defined    1
 
 # define __timespec_defined    1
 
+# include <bits/types.h>       /* This defines __time_t for us.  */
+
 /* POSIX.1b structure for a time value.  This is like a `struct timeval' but
    has nanoseconds instead of microseconds.  */
 struct timespec
   {
 /* POSIX.1b structure for a time value.  This is like a `struct timeval' but
    has nanoseconds instead of microseconds.  */
 struct timespec
   {
-    long int tv_sec;           /* Seconds.  */
+    __time_t tv_sec;           /* Seconds.  */
     long int tv_nsec;          /* Nanoseconds.  */
   };
 
     long int tv_nsec;          /* Nanoseconds.  */
   };
 
@@ -114,6 +128,7 @@ struct timespec
 
 
 #ifdef _TIME_H
 
 
 #ifdef _TIME_H
+__BEGIN_NAMESPACE_STD
 /* Used by other time functions.  */
 struct tm
 {
 /* Used by other time functions.  */
 struct tm
 {
@@ -128,15 +143,19 @@ struct tm
   int tm_isdst;                        /* DST.         [-1/0/1]*/
 
 #ifdef __UCLIBC_HAS_TM_EXTENSIONS__
   int tm_isdst;                        /* DST.         [-1/0/1]*/
 
 #ifdef __UCLIBC_HAS_TM_EXTENSIONS__
-# ifdef        __USE_BSD
+#ifdef __USE_BSD
   long int tm_gmtoff;          /* Seconds east of UTC.  */
   long int tm_gmtoff;          /* Seconds east of UTC.  */
-  __const char tm_zone[8];     /* Timezone abbreviation.  */
-# else
+  __const char *tm_zone;       /* Timezone abbreviation.  */
+#else
   long int __tm_gmtoff;                /* Seconds east of UTC.  */
   long int __tm_gmtoff;                /* Seconds east of UTC.  */
-  __const char __tm_zone[8];/* Timezone abbreviation.  */
-# endif
+  __const char *__tm_zone;     /* Timezone abbreviation.  */
+#endif
 #endif /* __UCLIBC_HAS_TM_EXTENSIONS__ */
 };
 #endif /* __UCLIBC_HAS_TM_EXTENSIONS__ */
 };
+__END_NAMESPACE_STD
+#if defined __USE_XOPEN || defined __USE_POSIX || defined __USE_MISC
+__USING_NAMESPACE_STD(tm)
+#endif
 
 
 #ifdef __USE_POSIX199309
 
 
 #ifdef __USE_POSIX199309
@@ -160,16 +179,24 @@ typedef __pid_t pid_t;
 #endif
 
 
 #endif
 
 
+__BEGIN_NAMESPACE_STD
 /* Time used by the program so far (user time + system time).
    The result / CLOCKS_PER_SECOND is program time in seconds.  */
 extern clock_t clock (void) __THROW;
 
 /* Return the current time and put it in *TIMER if TIMER is not NULL.  */
 extern time_t time (time_t *__timer) __THROW;
 /* Time used by the program so far (user time + system time).
    The result / CLOCKS_PER_SECOND is program time in seconds.  */
 extern clock_t clock (void) __THROW;
 
 /* Return the current time and put it in *TIMER if TIMER is not NULL.  */
 extern time_t time (time_t *__timer) __THROW;
+libc_hidden_proto(time)
 
 
+#ifdef __UCLIBC_HAS_FLOATS__
 /* Return the difference between TIME1 and TIME0.  */
 extern double difftime (time_t __time1, time_t __time0)
      __THROW __attribute__ ((__const__));
 /* Return the difference between TIME1 and TIME0.  */
 extern double difftime (time_t __time1, time_t __time0)
      __THROW __attribute__ ((__const__));
+#endif /* __UCLIBC_HAS_FLOATS__ */
+
+#ifdef _LIBC
+# define CLOCK_IDFIELD_SIZE    3
+#endif
 
 /* Return the `time_t' representation of TP and normalize TP.  */
 extern time_t mktime (struct tm *__tp) __THROW;
 
 /* Return the `time_t' representation of TP and normalize TP.  */
 extern time_t mktime (struct tm *__tp) __THROW;
@@ -181,6 +208,7 @@ extern time_t mktime (struct tm *__tp) __THROW;
 extern size_t strftime (char *__restrict __s, size_t __maxsize,
                        __const char *__restrict __format,
                        __const struct tm *__restrict __tp) __THROW;
 extern size_t strftime (char *__restrict __s, size_t __maxsize,
                        __const char *__restrict __format,
                        __const struct tm *__restrict __tp) __THROW;
+__END_NAMESPACE_STD
 
 # ifdef __USE_XOPEN
 /* Parse S according to FORMAT and store binary time information in TP.
 
 # ifdef __USE_XOPEN
 /* Parse S according to FORMAT and store binary time information in TP.
@@ -190,7 +218,29 @@ extern char *strptime (__const char *__restrict __s,
      __THROW;
 # endif
 
      __THROW;
 # endif
 
+#ifdef __UCLIBC_HAS_XLOCALE__
+# ifdef __USE_XOPEN2K8
+/* Similar to the two functions above but take the information from
+   the provided locale and not the global locale.  */
+# include <xlocale.h>
+
+extern size_t strftime_l (char *__restrict __s, size_t __maxsize,
+                         __const char *__restrict __format,
+                         __const struct tm *__restrict __tp,
+                         __locale_t __loc) __THROW;
+libc_hidden_proto(strftime_l)
+# endif
 
 
+# ifdef __USE_GNU
+extern char *strptime_l (__const char *__restrict __s,
+                        __const char *__restrict __fmt, struct tm *__tp,
+                        __locale_t __loc) __THROW;
+libc_hidden_proto(strptime_l)
+# endif
+#endif
+
+
+__BEGIN_NAMESPACE_STD
 /* Return the `struct tm' representation of *TIMER
    in Universal Coordinated Time (aka Greenwich Mean Time).  */
 extern struct tm *gmtime (__const time_t *__timer) __THROW;
 /* Return the `struct tm' representation of *TIMER
    in Universal Coordinated Time (aka Greenwich Mean Time).  */
 extern struct tm *gmtime (__const time_t *__timer) __THROW;
@@ -198,6 +248,8 @@ extern struct tm *gmtime (__const time_t *__timer) __THROW;
 /* Return the `struct tm' representation
    of *TIMER in the local timezone.  */
 extern struct tm *localtime (__const time_t *__timer) __THROW;
 /* Return the `struct tm' representation
    of *TIMER in the local timezone.  */
 extern struct tm *localtime (__const time_t *__timer) __THROW;
+libc_hidden_proto(localtime)
+__END_NAMESPACE_STD
 
 # if defined __USE_POSIX || defined __USE_MISC
 /* Return the `struct tm' representation of *TIMER in UTC,
 
 # if defined __USE_POSIX || defined __USE_MISC
 /* Return the `struct tm' representation of *TIMER in UTC,
@@ -209,14 +261,19 @@ extern struct tm *gmtime_r (__const time_t *__restrict __timer,
    using *TP to store the result.  */
 extern struct tm *localtime_r (__const time_t *__restrict __timer,
                               struct tm *__restrict __tp) __THROW;
    using *TP to store the result.  */
 extern struct tm *localtime_r (__const time_t *__restrict __timer,
                               struct tm *__restrict __tp) __THROW;
+libc_hidden_proto(localtime_r)
 # endif        /* POSIX or misc */
 
 # endif        /* POSIX or misc */
 
+__BEGIN_NAMESPACE_STD
 /* Return a string of the form "Day Mon dd hh:mm:ss yyyy\n"
    that is the representation of TP in this format.  */
 extern char *asctime (__const struct tm *__tp) __THROW;
 /* Return a string of the form "Day Mon dd hh:mm:ss yyyy\n"
    that is the representation of TP in this format.  */
 extern char *asctime (__const struct tm *__tp) __THROW;
+libc_hidden_proto(asctime)
 
 /* Equivalent to `asctime (localtime (timer))'.  */
 extern char *ctime (__const time_t *__timer) __THROW;
 
 /* Equivalent to `asctime (localtime (timer))'.  */
 extern char *ctime (__const time_t *__timer) __THROW;
+libc_hidden_proto(ctime)
+__END_NAMESPACE_STD
 
 # if defined __USE_POSIX || defined __USE_MISC
 /* Reentrant versions of the above functions.  */
 
 # if defined __USE_POSIX || defined __USE_MISC
 /* Reentrant versions of the above functions.  */
@@ -225,6 +282,7 @@ extern char *ctime (__const time_t *__timer) __THROW;
    that is the representation of TP in this format.  */
 extern char *asctime_r (__const struct tm *__restrict __tp,
                        char *__restrict __buf) __THROW;
    that is the representation of TP in this format.  */
 extern char *asctime_r (__const struct tm *__restrict __tp,
                        char *__restrict __buf) __THROW;
+libc_hidden_proto(asctime_r)
 
 /* Equivalent to `asctime_r (localtime_r (timer, *TMP*), buf)'.  */
 extern char *ctime_r (__const time_t *__restrict __timer,
 
 /* Equivalent to `asctime_r (localtime_r (timer, *TMP*), buf)'.  */
 extern char *ctime_r (__const time_t *__restrict __timer,
@@ -233,9 +291,12 @@ extern char *ctime_r (__const time_t *__restrict __timer,
 
 
 /* Defined in localtime.c.  */
 
 
 /* Defined in localtime.c.  */
+#ifdef __UCLIBC_MJN3_ONLY__
+#warning "mjn3 FIXME: __tzname, __daylight, and __timezone have a prototype but are not defined."
 extern char *__tzname[2];      /* Current timezone names.  */
 extern int __daylight;         /* If daylight-saving time is ever in use.  */
 extern long int __timezone;    /* Seconds west of UTC.  */
 extern char *__tzname[2];      /* Current timezone names.  */
 extern int __daylight;         /* If daylight-saving time is ever in use.  */
 extern long int __timezone;    /* Seconds west of UTC.  */
+#endif /* __UCLIBC_MJN3_ONLY__ */
 
 
 # ifdef        __USE_POSIX
 
 
 # ifdef        __USE_POSIX
@@ -245,6 +306,7 @@ extern char *tzname[2];
 /* Set time conversion information from the TZ environment variable.
    If TZ is not defined, a locale-dependent default is used.  */
 extern void tzset (void) __THROW;
 /* Set time conversion information from the TZ environment variable.
    If TZ is not defined, a locale-dependent default is used.  */
 extern void tzset (void) __THROW;
+libc_hidden_proto(tzset)
 # endif
 
 # if defined __USE_SVID || defined __USE_XOPEN
 # endif
 
 # if defined __USE_SVID || defined __USE_XOPEN
@@ -281,13 +343,19 @@ extern int dysize (int __year) __THROW  __attribute__ ((__const__));
 
 
 # ifdef __USE_POSIX199309
 
 
 # ifdef __USE_POSIX199309
-/* Pause execution for a number of nanoseconds.  */
+#  if defined __UCLIBC_HAS_REALTIME__
+/* Pause execution for a number of nanoseconds.
+
+   This function is a cancellation point and therefore not marked with
+   __THROW.  */
 extern int nanosleep (__const struct timespec *__requested_time,
 extern int nanosleep (__const struct timespec *__requested_time,
-                     struct timespec *__remaining) __THROW;
+                     struct timespec *__remaining);
+libc_hidden_proto(nanosleep)
 
 
 /* Get resolution of clock CLOCK_ID.  */
 extern int clock_getres (clockid_t __clock_id, struct timespec *__res) __THROW;
 
 
 /* Get resolution of clock CLOCK_ID.  */
 extern int clock_getres (clockid_t __clock_id, struct timespec *__res) __THROW;
+libc_hidden_proto(clock_getres)
 
 /* Get current value of clock CLOCK_ID and store it in TP.  */
 extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __THROW;
 
 /* Get current value of clock CLOCK_ID and store it in TP.  */
 extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __THROW;
@@ -295,18 +363,24 @@ extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __THROW;
 /* Set clock CLOCK_ID to value TP.  */
 extern int clock_settime (clockid_t __clock_id, __const struct timespec *__tp)
      __THROW;
 /* Set clock CLOCK_ID to value TP.  */
 extern int clock_settime (clockid_t __clock_id, __const struct timespec *__tp)
      __THROW;
+#  endif /* __UCLIBC_HAS_REALTIME__ */
+
+#  if defined __USE_XOPEN2K && defined __UCLIBC_HAS_ADVANCED_REALTIME__
+#   ifdef __UCLIBC_HAS_THREADS_NATIVE__
+/* High-resolution sleep with the specified clock.
 
 
-#  ifdef __USE_XOPEN2K
-/* High-resolution sleep with the specified clock.  */
+   This function is a cancellation point and therefore not marked with
+   __THROW.  */
 extern int clock_nanosleep (clockid_t __clock_id, int __flags,
                            __const struct timespec *__req,
 extern int clock_nanosleep (clockid_t __clock_id, int __flags,
                            __const struct timespec *__req,
-                           struct timespec *__rem) __THROW;
+                           struct timespec *__rem);
 
 /* Return clock ID for CPU-time clock.  */
 extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __THROW;
 
 /* Return clock ID for CPU-time clock.  */
 extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __THROW;
+#   endif /* __UCLIBC_HAS_THREADS_NATIVE__ */
 #  endif
 
 #  endif
 
-
+#  if defined __UCLIBC_HAS_REALTIME__
 /* Create new per-process timer using CLOCK_ID.  */
 extern int timer_create (clockid_t __clock_id,
                         struct sigevent *__restrict __evp,
 /* Create new per-process timer using CLOCK_ID.  */
 extern int timer_create (clockid_t __clock_id,
                         struct sigevent *__restrict __evp,
@@ -326,9 +400,12 @@ extern int timer_gettime (timer_t __timerid, struct itimerspec *__value)
 
 /* Get expiration overrun for timer TIMERID.  */
 extern int timer_getoverrun (timer_t __timerid) __THROW;
 
 /* Get expiration overrun for timer TIMERID.  */
 extern int timer_getoverrun (timer_t __timerid) __THROW;
-# endif
+#  endif /* __UCLIBC_HAS_REALTIME__ */
+# endif /* __USE_POSIX199309 */
 
 
 
 
+#ifdef __UCLIBC_MJN3_ONLY__
+#warning "mjn3 FIXME: a bunch of unimplemented function prototypes."
 # ifdef __USE_XOPEN_EXTENDED
 /* Set to one of the following values to indicate an error.
      1  the DATEMSK environment variable is null or undefined,
 # ifdef __USE_XOPEN_EXTENDED
 /* Set to one of the following values to indicate an error.
      1  the DATEMSK environment variable is null or undefined,
@@ -346,8 +423,11 @@ extern int getdate_err;
 /* Parse the given string as a date specification and return a value
    representing the value.  The templates from the file identified by
    the environment variable DATEMSK are used.  In case of an error
 /* Parse the given string as a date specification and return a value
    representing the value.  The templates from the file identified by
    the environment variable DATEMSK are used.  In case of an error
-   `getdate_err' is set.  */
-extern struct tm *getdate (__const char *__string) __THROW;
+   `getdate_err' is set.
+
+   This function is a possible cancellation points and therefore not
+   marked with __THROW.  */
+extern struct tm *getdate (__const char *__string);
 # endif
 
 # ifdef __USE_GNU
 # endif
 
 # ifdef __USE_GNU
@@ -355,11 +435,16 @@ extern struct tm *getdate (__const char *__string) __THROW;
    and the static buffer to return the result in, we provide a thread-safe
    variant.  The functionality is the same.  The result is returned in
    the buffer pointed to by RESBUFP and in case of an error the return
    and the static buffer to return the result in, we provide a thread-safe
    variant.  The functionality is the same.  The result is returned in
    the buffer pointed to by RESBUFP and in case of an error the return
-   value is != 0 with the same values as given above for `getdate_err'.  */
+   value is != 0 with the same values as given above for `getdate_err'.
+
+   This function is not part of POSIX and therefore no official
+   cancellation point.  But due to similarity with an POSIX interface
+   or due to the implementation it is a cancellation point and
+   therefore not marked with __THROW.  */
 extern int getdate_r (__const char *__restrict __string,
 extern int getdate_r (__const char *__restrict __string,
-                     struct tm *__restrict __resbufp) __THROW;
+                     struct tm *__restrict __resbufp);
 # endif
 # endif
-
+#endif /* __UCLIBC_MJN3_ONLY__ */
 
 __END_DECLS
 
 
 __END_DECLS