[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: routing socket rouding?
>> There is a macro, historically ROUNDUP defined in various .c files,
>> RT_ROUNDUP in <net/route.h> in 5.1 and presumably later, [...]
>> So, I'm curious: does anyone know what this macro turned into on a
>> system with sizeof(long) not a power of two but with anything like
>> the BSD routing socket, if such a system exists?
> ROUNDUP (or ROUND_UP) macro was replaced by ALIGN on some platforms,
(a) That appears to be dealing with PCI support, not routing socket
support. It's the routing socket macro I'm curious about. (The
ROUND_UP macro being replaced does appear to assume the grain size
being rounded up to is a pwoer of two, so it's related, but since it
doesn't show the definition of the ALIGN it's being replaced with, the
message is pretty much content-free for my purposes.)
(b) The ROUND_UP macro affected by that patch is not the one used by
the routing socket code; it returns zero when passed zero, whereas the
routing socket's ROUNDUP / RT_ROUNDUP returns sizeof(long) when passed
(c) Your citing this in response to my question implies that Linux runs
on something with sizeof(long) not a power of two. Now I'm also
curious what CPU (and/or machine) that is.
> and it appears to assume 2's compliment arithmetic....
Well, two's complement (not "compliment") versus alternatives is
relevant only when dealing with negative values. I don't think
anything in the routing socket code can ever pass a negative value to
ROUNDUP/RT_ROUNDUP; they mostly are sa_len values, and sa_len is
/~\ The ASCII Mouse
\ / Ribbon Campaign
X Against HTML mouse%rodents-montreal.org@localhost
/ \ Email! 7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B
Main Index |
Thread Index |