aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog42
-rw-r--r--bits/resource.h3
-rw-r--r--bits/time.h54
-rw-r--r--include/bits/types/clock_t.h1
-rw-r--r--include/bits/types/clockid_t.h1
-rw-r--r--include/bits/types/struct_itimerspec.h1
-rw-r--r--include/bits/types/struct_timespec.h1
-rw-r--r--include/bits/types/struct_timeval.h1
-rw-r--r--include/bits/types/struct_tm.h1
-rw-r--r--include/bits/types/time_t.h1
-rw-r--r--include/bits/types/timer_t.h1
-rw-r--r--include/time.h7
-rw-r--r--io/fcntl.h3
-rw-r--r--io/sys/poll.h3
-rw-r--r--io/sys/stat.h13
-rw-r--r--io/utime.h3
-rw-r--r--misc/sys/select.h8
-rw-r--r--posix/sched.h9
-rw-r--r--posix/sys/times.h4
-rw-r--r--posix/sys/types.h9
-rw-r--r--resolv/netdb.h3
-rw-r--r--rt/aio.h3
-rw-r--r--rt/mqueue.h3
-rw-r--r--signal/signal.h3
-rw-r--r--sysdeps/nptl/pthread.h1
-rw-r--r--sysdeps/pthread/semaphore.h3
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/resource.h3
-rw-r--r--sysdeps/unix/sysv/linux/alpha/sys/acct.h4
-rw-r--r--sysdeps/unix/sysv/linux/bits/resource.h3
-rw-r--r--sysdeps/unix/sysv/linux/bits/time.h68
-rw-r--r--sysdeps/unix/sysv/linux/bits/timex.h1
-rw-r--r--sysdeps/unix/sysv/linux/mips/bits/resource.h3
-rw-r--r--sysdeps/unix/sysv/linux/net/ppp_defs.h4
-rw-r--r--sysdeps/unix/sysv/linux/sparc/bits/resource.h3
-rw-r--r--sysdeps/unix/sysv/linux/sys/acct.h3
-rw-r--r--sysdeps/unix/sysv/linux/sys/timerfd.h1
-rw-r--r--sysvipc/sys/msg.h3
-rw-r--r--sysvipc/sys/sem.h3
-rw-r--r--sysvipc/sys/shm.h3
-rw-r--r--time/Makefile7
-rw-r--r--time/bits/types/clock_t.h15
-rw-r--r--time/bits/types/clockid_t.h9
-rw-r--r--time/bits/types/struct_itimerspec.h14
-rw-r--r--time/bits/types/struct_timespec.h14
-rw-r--r--time/bits/types/struct_timeval.h13
-rw-r--r--time/bits/types/struct_tm.h33
-rw-r--r--time/bits/types/time_t.h14
-rw-r--r--time/bits/types/timer_t.h9
-rw-r--r--time/sys/time.h9
-rw-r--r--time/sys/timeb.h4
-rw-r--r--time/time.h237
51 files changed, 327 insertions, 335 deletions
diff --git a/ChangeLog b/ChangeLog
index 60500b47c8..b428ba42ee 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,47 @@
2016-09-23 Zack Weinberg <zackw@panix.com>
+ * time/time.h, bits/time.h, sysdeps/unix/sysv/linux/bits/time.h:
+ Remove all logic conditional on __need macros. Move all the
+ conditionally defined types to their own headers...
+ * time/bits/types/clock_t.h: Define clock_t here.
+ * time/bits/types/clockid_t.h: Define clockid_t here.
+ * time/bits/types/struct_itimerspec.h: Define struct itimerspec here.
+ * time/bits/types/struct_timespec.h: Define struct timespec here.
+ * time/bits/types/struct_timeval.h: Define struct timeval here.
+ * time/bits/types/struct_tm.h: Define struct tm here.
+ * time/bits/types/time_t.h: Define time_t here.
+ * time/bits/types/timer_t.h: Define timer_t here.
+ * time/Makefile: Install the new headers.
+
+ * bits/resource.h, io/fcntl.h, io/sys/poll.h, io/sys/stat.h
+ * io/utime.h, misc/sys/select.h, posix/sched.h, posix/sys/times.h
+ * posix/sys/types.h, resolv/netdb.h, rt/aio.h, rt/mqueue.h
+ * signal/signal.h, pthread/semaphore.h, sysdeps/nptl/pthread.h
+ * sysdeps/unix/sysv/linux/alpha/bits/resource.h
+ * sysdeps/unix/sysv/linux/alpha/sys/acct.h
+ * sysdeps/unix/sysv/linux/bits/resource.h
+ * sysdeps/unix/sysv/linux/bits/timex.h
+ * sysdeps/unix/sysv/linux/mips/bits/resource.h
+ * sysdeps/unix/sysv/linux/net/ppp_defs.h
+ * sysdeps/unix/sysv/linux/sparc/bits/resource.h
+ * sysdeps/unix/sysv/linux/sys/acct.h
+ * sysdeps/unix/sysv/linux/sys/timerfd.h
+ * sysvipc/sys/msg.h, sysvipc/sys/sem.h, sysvipc/sys/shm.h
+ * time/sys/time.h, time/sys/timeb.h
+ Use the new bits/types headers.
+
+ * include/time.h: Remove __need logic.
+ * include/bits/time.h
+ * include/bits/types/clock_t.h, include/bits/types/clockid_t.h
+ * include/bits/types/time_t.h, include/bits/types/timer_t.h
+ * include/bits/types/struct_itimerspec.h
+ * include/bits/types/struct_timespec.h
+ * include/bits/types/struct_timeval.h
+ * include/bits/types/struct_tm.h:
+ New wrapper headers.
+
+2016-09-23 Zack Weinberg <zackw@panix.com>
+
* sysdeps/mach/hurd/net/if_ppp.h
* sysdeps/unix/sysv/linux/net/if_ppp.h:
Only define struct ifpppstatsreq and struct ifpppcstatsreq
diff --git a/bits/resource.h b/bits/resource.h
index 7d2d66c7c9..5cd2fe56a2 100644
--- a/bits/resource.h
+++ b/bits/resource.h
@@ -129,8 +129,7 @@ enum __rusage_who
#define RUSAGE_CHILDREN RUSAGE_CHILDREN
};
-#define __need_timeval
-#include <bits/time.h> /* For `struct timeval'. */
+#include <bits/types/struct_timeval.h>
/* Structure which says how much of each resource has been used. */
struct rusage
diff --git a/bits/time.h b/bits/time.h
index 19c7ab0997..84e0e94a17 100644
--- a/bits/time.h
+++ b/bits/time.h
@@ -20,9 +20,10 @@
* Never include this file directly; use <time.h> instead.
*/
-#ifndef __need_timeval
-# ifndef _BITS_TIME_H
-# define _BITS_TIME_H 1
+#ifndef _BITS_TIME_H
+#define _BITS_TIME_H 1
+
+#include <bits/types.h>
/* ISO/IEC 9899:1999 7.23.1: Components of time
The macro `CLOCKS_PER_SEC' is an expression with type `clock_t' that is
@@ -30,51 +31,34 @@
/* CAE XSH, Issue 4, Version 2: <time.h>
The value of CLOCKS_PER_SEC is required to be 1 million on all
XSI-conformant systems. */
-# define CLOCKS_PER_SEC ((clock_t) 1000000)
+#define CLOCKS_PER_SEC ((__clock_t) 1000000)
-# if !defined __STRICT_ANSI__ && !defined __USE_XOPEN2K
+#if (!defined __STRICT_ANSI__ || defined __USE_POSIX) \
+ && !defined __USE_XOPEN2K
/* Even though CLOCKS_PER_SEC has such a strange value CLK_TCK
presents the real value for clock ticks per second for the system. */
-# include <bits/types.h>
extern long int __sysconf (int);
-# define CLK_TCK ((__clock_t) __sysconf (2)) /* 2 is _SC_CLK_TCK */
-# endif
+# define CLK_TCK ((__clock_t) __sysconf (2)) /* 2 is _SC_CLK_TCK */
+#endif
-# ifdef __USE_POSIX199309
+#ifdef __USE_POSIX199309
/* Identifier for system-wide realtime clock. */
-# define CLOCK_REALTIME 0
+# define CLOCK_REALTIME 0
/* Monotonic system-wide clock. */
-# define CLOCK_MONOTONIC 1
+# define CLOCK_MONOTONIC 1
/* High-resolution timer from the CPU. */
-# define CLOCK_PROCESS_CPUTIME_ID 2
+# define CLOCK_PROCESS_CPUTIME_ID 2
/* Thread-specific CPU-time clock. */
-# define CLOCK_THREAD_CPUTIME_ID 3
+# define CLOCK_THREAD_CPUTIME_ID 3
/* Monotonic system-wide clock, not adjusted for frequency scaling. */
-# define CLOCK_MONOTONIC_RAW 4
+# define CLOCK_MONOTONIC_RAW 4
/* Identifier for system-wide realtime clock, updated only on ticks. */
-# define CLOCK_REALTIME_COARSE 5
+# define CLOCK_REALTIME_COARSE 5
/* Monotonic system-wide clock, updated only on ticks. */
-# define CLOCK_MONOTONIC_COARSE 6
+# define CLOCK_MONOTONIC_COARSE 6
/* Flag to indicate time is absolute. */
-# define TIMER_ABSTIME 1
-# endif
-
-# endif /* bits/time.h */
+# define TIMER_ABSTIME 1
#endif
-#ifdef __need_timeval
-# undef __need_timeval
-# ifndef _STRUCT_TIMEVAL
-# define _STRUCT_TIMEVAL 1
-# include <bits/types.h>
-
-/* A time value that is accurate to the nearest
- microsecond but also has a range of years. */
-struct timeval
- {
- __time_t tv_sec; /* Seconds. */
- __suseconds_t tv_usec; /* Microseconds. */
- };
-# endif /* struct timeval */
-#endif /* need timeval */
+#endif /* bits/time.h */
diff --git a/include/bits/types/clock_t.h b/include/bits/types/clock_t.h
new file mode 100644
index 0000000000..a08940dbef
--- /dev/null
+++ b/include/bits/types/clock_t.h
@@ -0,0 +1 @@
+#include "../../time/bits/types/clock_t.h"
diff --git a/include/bits/types/clockid_t.h b/include/bits/types/clockid_t.h
new file mode 100644
index 0000000000..fb0a514446
--- /dev/null
+++ b/include/bits/types/clockid_t.h
@@ -0,0 +1 @@
+#include "../../time/bits/types/clockid_t.h"
diff --git a/include/bits/types/struct_itimerspec.h b/include/bits/types/struct_itimerspec.h
new file mode 100644
index 0000000000..7d325d6f3c
--- /dev/null
+++ b/include/bits/types/struct_itimerspec.h
@@ -0,0 +1 @@
+#include "../../time/bits/types/struct_itimerspec.h"
diff --git a/include/bits/types/struct_timespec.h b/include/bits/types/struct_timespec.h
new file mode 100644
index 0000000000..b8ec6a3862
--- /dev/null
+++ b/include/bits/types/struct_timespec.h
@@ -0,0 +1 @@
+#include "../../time/bits/types/struct_timespec.h"
diff --git a/include/bits/types/struct_timeval.h b/include/bits/types/struct_timeval.h
new file mode 100644
index 0000000000..5d2cb78259
--- /dev/null
+++ b/include/bits/types/struct_timeval.h
@@ -0,0 +1 @@
+#include "../../time/bits/types/struct_timeval.h"
diff --git a/include/bits/types/struct_tm.h b/include/bits/types/struct_tm.h
new file mode 100644
index 0000000000..b70ac52f68
--- /dev/null
+++ b/include/bits/types/struct_tm.h
@@ -0,0 +1 @@
+#include "../../time/bits/types/struct_tm.h"
diff --git a/include/bits/types/time_t.h b/include/bits/types/time_t.h
new file mode 100644
index 0000000000..16e75e19be
--- /dev/null
+++ b/include/bits/types/time_t.h
@@ -0,0 +1 @@
+#include "../../time/bits/types/time_t.h"
diff --git a/include/bits/types/timer_t.h b/include/bits/types/timer_t.h
new file mode 100644
index 0000000000..e6b279bfcc
--- /dev/null
+++ b/include/bits/types/timer_t.h
@@ -0,0 +1 @@
+#include "../../time/bits/types/timer_t.h"
diff --git a/include/time.h b/include/time.h
index 8dd10dcdd8..684ceb812f 100644
--- a/include/time.h
+++ b/include/time.h
@@ -1,8 +1,7 @@
#ifndef _TIME_H
-#if defined __need_time_t || defined __need_clock_t || defined __need_timespec || defined _ISOMAC
-# include <time/time.h>
-#else
-# include <time/time.h>
+#include <time/time.h>
+
+#ifndef _ISOMAC
# include <xlocale.h>
__BEGIN_DECLS
diff --git a/io/fcntl.h b/io/fcntl.h
index cb706b4f0f..12099a2181 100644
--- a/io/fcntl.h
+++ b/io/fcntl.h
@@ -72,8 +72,7 @@ typedef __pid_t pid_t;
/* For XPG all symbols from <sys/stat.h> should also be available. */
#ifdef __USE_XOPEN2K8
-# define __need_timespec
-# include <time.h>
+# include <bits/types/struct_timespec.h>
#endif
#if defined __USE_XOPEN || defined __USE_XOPEN2K8
# include <bits/stat.h>
diff --git a/io/sys/poll.h b/io/sys/poll.h
index e751860acd..58498b0187 100644
--- a/io/sys/poll.h
+++ b/io/sys/poll.h
@@ -27,8 +27,7 @@
/* Get the __sigset_t definition. */
# include <bits/sigset.h>
/* Get the timespec definition. */
-# define __need_timespec
-# include <time.h>
+#include <bits/types/struct_timespec.h>
#endif
diff --git a/io/sys/stat.h b/io/sys/stat.h
index 6925f61ae5..71462a7f62 100644
--- a/io/sys/stat.h
+++ b/io/sys/stat.h
@@ -26,19 +26,16 @@
#include <bits/types.h> /* For __mode_t and __dev_t. */
-#if defined __USE_XOPEN || defined __USE_XOPEN2K || defined __USE_ATFILE
-# if defined __USE_XOPEN || defined __USE_XOPEN2K
-# define __need_time_t
-# endif
-# ifdef __USE_ATFILE
-# define __need_timespec
-# endif
-# include <time.h> /* For time_t resp. timespec. */
+#ifdef __USE_ATFILE
+# include <bits/types/struct_timespec.h>
#endif
#if defined __USE_XOPEN || defined __USE_XOPEN2K
/* The Single Unix specification says that some more types are
available here. */
+
+# include <bits/types/time_t.h>
+
# ifndef __dev_t_defined
typedef __dev_t dev_t;
# define __dev_t_defined
diff --git a/io/utime.h b/io/utime.h
index 3cc0d5e99d..b30e1cc022 100644
--- a/io/utime.h
+++ b/io/utime.h
@@ -29,8 +29,7 @@ __BEGIN_DECLS
#include <bits/types.h>
#if defined __USE_XOPEN || defined __USE_XOPEN2K
-# define __need_time_t
-# include <time.h>
+# include <bits/types/time_t.h>
#endif
/* Structure describing file times. */
diff --git a/misc/sys/select.h b/misc/sys/select.h
index 52dd94fe01..2e4de407d7 100644
--- a/misc/sys/select.h
+++ b/misc/sys/select.h
@@ -38,13 +38,11 @@ typedef __sigset_t sigset_t;
#endif
/* Get definition of timer specification structures. */
-#define __need_time_t
+#include <bits/types/time_t.h>
+#include <bits/types/struct_timeval.h>
#ifdef __USE_XOPEN2K
-# define __need_timespec
+# include <bits/types/struct_timespec.h>
#endif
-#include <time.h>
-#define __need_timeval
-#include <bits/time.h>
#ifndef __suseconds_t_defined
typedef __suseconds_t suseconds_t;
diff --git a/posix/sched.h b/posix/sched.h
index 253c963053..5b431c64bf 100644
--- a/posix/sched.h
+++ b/posix/