RFC: time_t declaration

Bruno Haible bruno@clisp.org
Wed, 1 Dec 2004 14:35:42 +0100


--Boundary-00=_uicrBCT+iQ6KTD5
Content-Type: text/plain;
  charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Hi Robert,

> We have a problem with the time_t declaration:  It is declared with a
> different type in FreeBSD than in GNU.  Therefore the kernel is in
> disparity with libc.
>
> If I understood correctly, in his patchset for kfreebsd 4.6 headers Bruno
> Haible renamed time_t to __kernel_time_t (and analogously for structures
> that contain time_t), presumably to avoid conflict with the time_t
> declaration in libc.  So userland programs need to use __kernel_time_t and
> friends when the data is to be analised by the kernel (after a syscall) and
> time_t when the stuff is for libc.
>
> Bruno, could you confirm (if you remember) that this is the situation?

Yes, this is the situation. More precisely, it's about the 64-bit CPU ports
(such as alpha), and the __kernel_time_t is 32-bit, whereas I wanted the
__time_t to be 64-bit.

I made this choice because 32-bit time_t will overflow in 2038. I expect
that 32-bit systems will not be around any more at that time, but 64-bit
systems will. So all systems which use 32-bit time_t on 64-bit platforms
will have to change their time_t type till then. But time_t is part of
the ABI offered by glibc, and changing it would require a change of the
major version number of glibc.

> I'm considering switching to a model in which userland is adapted to use
> the same value as the kernel.  This would save us work in maintaining the
> patchset for kfreebsd5-headers (which, btw, contains breakage because of
> this), but i'm not sure if Glibc could get into trouble by changing the
> userland time_t definition in <bits/types.h>.

Glibc would not be in trouble. But we would be at the moment when
the FreeBSD kernel changes to use a 64-bit time_t as well and we cannot
change time_t in user land and the year 2038 approaches...

Now, a weak point in this argumentation is that the 'alpha' architecture
is already nearly dead and will be dead before 2038. So it would be good
to check what is the status of the other 64-bit ports in FreeBSD 5.3
(AMD64, SPARC64 etc.). Is the 'alpha' architecture the only one with a
32-bit time_t or not? If yes, then we don't need the __kernel_time_t thing
at all. If no, we need it.

Bruno

--Boundary-00=_uicrBCT+iQ6KTD5
Content-Type: application/x-tgz;
  name="time-64.tar.gz"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="time-64.tar.gz"

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
L5H+B8PDgtYAoAAA

--Boundary-00=_uicrBCT+iQ6KTD5--