[igt-dev] [PATCH i-g-t] lib/drmtest.h: make ALIGN work with uint64_t values

Kamil Konieczny kamil.konieczny at linux.intel.com
Tue Oct 17 15:43:09 UTC 2023


Hi Marcin,
On 2023-10-17 at 12:54:28 +0000, Marcin Bernatowicz wrote:
> Let alignment be the same type as aligned value.
> Based on kernel code.
> 
> This should fix code like:
> 
> uint32_t a = 4096;
> uint64_t v = 32768ULL * 32768 * 4;
> 
> v = ALIGN(v, a);
> 
> Signed-off-by: Marcin Bernatowicz <marcin.bernatowicz at linux.intel.com>

Reviewed-by: Kamil Konieczny <kamil.konieczny at linux.intel.com>

> ---
>  lib/drmtest.h | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/lib/drmtest.h b/lib/drmtest.h
> index 97ab6e759..524d81b7a 100644
> --- a/lib/drmtest.h
> +++ b/lib/drmtest.h
> @@ -87,7 +87,8 @@ void __set_forced_driver(const char *name);
>   *
>   * Macro to align a value @v to a specified unit @a.
>   */
> -#define ALIGN(v, a) (((v) + (a)-1) & ~((a)-1))
> +#define ALIGN(v, a) ALIGN_MASK(v, (typeof(v))(a) - 1)
> +#define ALIGN_MASK(v, mask) (((v) + (mask)) & ~(mask))
>  
>  /**
>   * ALIGN_DOWN:
> -- 
> 2.42.0
> 


More information about the igt-dev mailing list