This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH 1/2 v4] libc-internal.h: add ALIGN helper macros
- From: Rasmus Villemoes <rv at rasmusvillemoes dot dk>
- To: libc-alpha at sourceware dot org
- Date: Wed, 05 Jun 2013 12:15:12 +0000
- Subject: Re: [PATCH 1/2 v4] libc-internal.h: add ALIGN helper macros
- References: <1369327649-906-1-git-send-email-vapier at gentoo dot org> <201306032305 dot 58361 dot vapier at gentoo dot org> <u0l7gia9mn7 dot fsf at orc05 dot imf dot au dot dk> <201306042137 dot 46393 dot vapier at gentoo dot org>
Mike Frysinger <vapier@gentoo.org> writes:
> On Tuesday 04 June 2013 06:49:00 Rasmus Villemoes wrote:
>> I'm afraid one would have to deal with types anyway, as recently seen
>> in the kernel http://lwn.net/Articles/548336/.
>
> this is easily solved in the macro form:
> #define ALIGN_DOWN(base, size) ((base) & ~((__typeof__(base))(size) - 1))
>
> which isn't easily achievable with inline funcs
(I wasn't trying to argue for inline funcs.)
Yes, this seems to work. At first I thought one would have the
opposite problem when typeof(base) was narrower than typeof(size) in
the case of ALIGN_UP. But in that case the __typeof__ is actually
applied to ((base)+(size)-1), which is of course sufficiently wide.
Is the extra expansion of size in ALIGN_UP a problem?
Rasmus