This is the mail archive of the mailing list for the glibc project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] time: Avoid alignment gaps in __tzfile_read

Florian Weimer wrote:

Anyway - if we're moving things around, how about putting 'leaps'
before 'transitions' instead of after? This will eliminate alignment
gaps just as well in practice, and it will allow us to do one fread
instead of two.
This is not possible because struct leap has alignment 4 on i386, while
the transitions array has alignment 8.

If that's the issue, we can easily change struct leap to have an alignment of 8 on x86-64 by using an alignment directive, or (less good) change the transitions array to have an alignment of 4 by packaging each transition value inside a struct.

It's not about performance, it's about simplifying the code in
preparation of eliminating most of the locking.

I guess I'm not seeing the point. The code isn't that much simpler and it is surely a bit fatter and slower, and I don't see how the simplification would make it easier to eliminate most locking. Perhaps it'll become more obvious in later patches....

I'm pondering whether we should leap second support
altogether because it leads to non-conformance with POSIX.

Oh my, that would be a bigger deal. Strictly speaking glibc currently conforms to POSIX in this respect, so what you're pondering is removing an extension to POSIX rather than fixing a conformance issue. Has anybody else ever done that; that is, has any other C library supported tzdb-style leap seconds and then removed the support?

PS. It would be ironic for glibc to remove leap second support at about the same time that Microsoft Windows finally added support. See:

Cuomo D. Top 10 Networking Features in Windows Server 2019: #10 Accurate Network Time. [Microsoft] Networking Blog. 2018-07-18.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]