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: "Carlos O'Donell" <carlos at redhat dot com>
- To: Mike Frysinger <vapier at gentoo dot org>
- Cc: libc-alpha at sourceware dot org
- Date: Mon, 03 Jun 2013 14:40:54 -0400
- 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> <1370070444-911-1-git-send-email-vapier at gentoo dot org>
On 06/01/2013 03:07 AM, Mike Frysinger wrote:
> Rather than open coding the masks, add helper macros to do the magic.
> This makes code easier to read.
>
> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
>
> 2013-05-23 Mike Frysinger <vapier@gentoo.org>
>
> * include/libc-internal.h (ALIGN_DOWN): New helper macro.
> (ALIGN_UP): Likewise.
> (PTR_ALIGN_DOWN): Likewise.
> (PTR_ALIGN_UP): Likewise.
OK.
> ---
> include/libc-internal.h | 18 ++++++++++++++++++
Resolves Roland's complaint over the use of cdefs.h.
> 1 file changed, 18 insertions(+)
>
> diff --git a/include/libc-internal.h b/include/libc-internal.h
> index 0c0fa02..fbe2bd9 100644
> --- a/include/libc-internal.h
> +++ b/include/libc-internal.h
> @@ -50,4 +50,22 @@ extern void __init_misc (int, char **, char **);
> /* Cast an integer or a pointer VAL to integer with proper type. */
> # define cast_to_integer(val) ((__integer_if_pointer_type (val)) (val))
>
> +/* Align a value by rounding down to closest size.
> + e.g. Using size of 4096, we get this behavior:
> + {4095, 4096, 4097} = {0, 4096, 4096}. */
> +#define ALIGN_DOWN(base, size) ((base) & ~((size) - 1))
OK.
> +
> +/* Align a value by rounding up to closest size.
> + e.g. Using size of 4096, we get this behavior:
> + {4095, 4096, 4097} = {4096, 4096, 8192}. */
> +#define ALIGN_UP(base, size) ALIGN_DOWN((base) + (size) - 1, (size))
OK.
> +
> +/* Same as ALIGN_DOWN(), but automatically casts when base is a pointer. */
> +#define PTR_ALIGN_DOWN(base, size) \
> + (void *) ALIGN_DOWN ((uintptr_t) (base), (size))
> +
> +/* Same as ALIGN_UP(), but automatically casts when base is a pointer. */
> +#define PTR_ALIGN_UP(base, size) \
> + (void *) ALIGN_UP ((uintptr_t) (base), (size))
> +
> #endif /* _LIBC_INTERNAL */
>
Resolves my complaint about the comment.
OK by me.
Signed-off-by: Carlos O'Donell <carlos@redhat.com>
Cheers,
Carlos.