Return-Path: Delivered-To: new-httpd-archive@hyperreal.org Received: (qmail 22840 invoked by uid 6000); 7 Jun 1998 03:51:57 -0000 Received: (qmail 22830 invoked from network); 7 Jun 1998 03:51:55 -0000 Received: from twinlark.arctic.org (204.62.130.91) by taz.hyperreal.org with SMTP; 7 Jun 1998 03:51:55 -0000 Received: (qmail 31426 invoked by uid 500); 7 Jun 1998 03:53:20 -0000 Date: Sat, 6 Jun 1998 20:53:20 -0700 (PDT) From: Dean Gaudet To: Apache Subject: Re: time_t is 64 bits in linux/alpha In-Reply-To: Message-ID: X-Comment: Visit http://www.arctic.org/~dgaudet/legal for information regarding copyright and disclaimer. MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=ISO-8859-1 Content-Transfer-Encoding: QUOTED-PRINTABLE Sender: new-httpd-owner@apache.org Precedence: bulk Reply-To: new-httpd@apache.org Oh yeah, I wanted to rant about big-endian order (i.e. network order).=20 If you study the theory behind mod_unique_id's tokens you'll see that with a "flag second" (second, or longer interval, in which no requests are served and all software is simultaneously upgraded) you can change from one token format to another... provided you keep the time_t at the front.= =20 If the time_t were in little-endian format, this would work correctly regardless of the time_t size on any of the hosts involved (assuming it's at least 32-bits long).=20 But no... it's big-endian order... To perform an upgrade from 32-bit time stamps to 64-bit timestamps, and maintain the property that tokens are unique for all time, we have to do something like this:=20 __u32 time_low; __u32 time_high; Each half is in BE order (network order). But the 64-bit aggregate is in a mixed little/big format. What a waste.=20 If it was in little endian format to begin with we could just start using "__u64 time;" and it would require no special coding.=20 Dean On Sat, 6 Jun 1998, Dean Gaudet wrote: > Yeah I was thinking about how to deal with this cleanly... it's too bad C > doesn't define the result of "u >> 32" where u is 32 bits... because we > could code it to expect a 64-bit time_t and break it into two parts, and > for 32-bit time_t it would result in a bunch of dead code (eliminated at > compile time).=20 >=20 > NSPR defines a 64-bit PRTime ... so it'll be easy to clean up in the nspr > version. >=20 > Dean >=20 > On Sun, 7 Jun 1998, Alvaro Martinez Echevarria wrote: >=20 > > On Fri, 5 Jun 1998, Dean Gaudet wrote: > >=20 > > > Is time_t 64-bits on alpha-linux ?=20 > > > Dean > >=20 > > Yes, as defined by /usr/include/asm/posix_types.h: > >=20 > > typedef long __kernel_time_t; > >=20 > > and /usr/include/linux/types.h: > >=20 > > typedef __kernel_time_t time_t; > >=20 > > So it's 64 bits. Right now I'm working on a patch for > > mod_unique_id to fix this problem, and to make it more simple I > > have changed the type of stamp from "time_t" to "unsigned int". > > This way htonl and ntohl work properly (although we'll have to > > change this back to 64bits before year 2106). > > Probably I'll submit the patch in a few minutes. > > Regards. > >=20 > > .------------------------------------------------------------------. > > | Alvaro Mart=EDnez Echevarr=EDa | LANDER SISTEMAS = | > > | alvaro@lander.es | P=BA Castellana, 121 | > > `--------------------------------| 28046 Madrid, SPAIN | > > | Tel: +34-91-5562883 | > > | Fax: +34-91-5563001 | > > `---------------------------------' > >=20 > >=20 >=20 >=20