* Eric W. Biederman ebiederman@lnxi.com [051112 22:13]:
struct lb_uint64 { uint32_t lo; uint32_t hi; };
No, it used to be a uint64_t and that caused problems. For reasons of backwards compatibility we want 32bit alignment not 64bit alignment. x86 only requires 32bit alignment for a unit64_t but x86_64 requires 64bit alignment.
Ok alignment might be an issue. Though that is a tough assumption made that a compiler won't happen to align the above struct to 64bit under some circumstances.
Do you remember the problems that this caused? If so, we should probably add a comment to the source, drop one version of the [un]pack_lb64 functions and put the other one in a common place.
The reason for my bitching is that there are so many of these things that some of us know to be necessary whereas from an outsiders view it might look like the left over of a long-fixed compiler bug or something.
Stefan