[PATCH 02/13] alist: Allow inclusion from OS headers

Heinrich Schuchardt heinrich.schuchardt at canonical.com
Wed May 27 20:36:45 CEST 2026


On 5/27/26 18:10, Simon Glass wrote:
> Sandbox needs to include system headers in some files, but also wants
> to use alist. Adjust the headers to permit this.
> 
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
> 
>   include/alist.h | 16 +++++++++++-----
>   lib/alist.c     |  1 +
>   2 files changed, 12 insertions(+), 5 deletions(-)
> 
> diff --git a/include/alist.h b/include/alist.h
> index b00d9ea97d6..69d7cdb722f 100644
> --- a/include/alist.h
> +++ b/include/alist.h
> @@ -10,8 +10,14 @@
>   #define __ALIST_H
>   
>   #include <stdbool.h>
> -#include <linux/bitops.h>
> +
> +#ifdef USE_HOSTCC
> +#include <sys/types.h>
> +#include <stdint.h>
> +#else
>   #include <linux/types.h>
> +#endif
> +#define BIT(nr)			(1UL << (nr))

BIT(nr) is already defined in include/linux/bitops.h.

We must not assume that no module includes both alist.h and 
linux/bitops.h. E.g. include/expo.h and include/lmb.h include both 
alist.h and linux/bitops.h. We should avoid redefinitions.

The following is an abuse of the enum type:

enum alist_flags {
         ALISTF_FAIL     = BIT(0),
};

As this is the only use of BIT(), we could simply use the value "1" here.

#define ALISTF_FAIL (1)

But as ALISTF_FAIL is the only bit in flags used, the best solution 
would be replacing flags by a boolean called fail.

Best regards

Heinrich

>   
>   /**
>    * struct alist - object list that can be allocated and freed
> @@ -41,10 +47,10 @@
>    */
>   struct alist {
>   	void *data;
> -	u16 obj_size;
> -	u16 count;
> -	u16 alloc;
> -	u16 flags;
> +	unsigned short obj_size;
> +	unsigned short count;
> +	unsigned short alloc;
> +	unsigned short flags;
>   };
>   
>   /**
> diff --git a/lib/alist.c b/lib/alist.c
> index 4ce651f5c45..0ae07f0f5c0 100644
> --- a/lib/alist.c
> +++ b/lib/alist.c
> @@ -8,6 +8,7 @@
>   
>   #include <alist.h>
>   #include <display_options.h>
> +#include <log.h>
>   #include <malloc.h>
>   #include <stdio.h>
>   #include <string.h>



More information about the U-Boot mailing list