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 <[email protected]>
---

  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>

Reply via email to