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>