Subject: Re: ancillary data alignment and binary backward compatibility
To: None <email@example.com>
From: None <firstname.lastname@example.org>
Date: 02/27/2000 20:05:09
>>> > - is hardcoded sizeof(long) alignment okay?
>>>Use the ALIGN() macro.
>> IIRC ALIGN() was not usable for this, does not capture sparc64 case
>> or something (maybe my memory is wrong).
> I was wrong. ALIGNBYTES in sparc64 looks okay.
> ALIGNBYTES looks more correct than sizeof(long) - 1. anyway, i'll
> try to introduce sysctl for it...
while I was trying to do this, I stuck with a problem. I changed
the definition for CMSG_ALIGN locally into this:
>#define CMSG_ALIGN(n) (((n) + __cmsg_align()) & ~__cmsg_align())
and made the code to grab kernel's idea about ALIGNBYTES via
function __cmsg_align(). The function will grab sysctl hw.alignbytes
Now, all CMSG_* macros are not constant. Is it legal?
If we change like this, we no longer be able to do the following:
Not sure which one is correct:
- CMSG_SPACE must resolve into constant, so "char foobaa[...];"
- there's no such requirement, programmer who wrote "char foobaa[...]"
is not correct.
If you have any reference to standard/whatever, please give me some