This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 1/2 v4] libc-internal.h: add ALIGN helper macros


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]