[Concept,15/19] linux: Add mempool.h header with memory pool stubs
Commit Message
From: Simon Glass <simon.glass@canonical.com>
Move memory pool type and operation stubs to a dedicated header file
that mirrors the Linux kernel organisation.
mempool.h provides:
- mempool_t type
- mempool_alloc() - allocate from pool (stub returns NULL)
- mempool_free() - free to pool (stub no-op)
- mempool_create_slab_pool() - create pool (stub returns NULL)
- mempool_destroy() - destroy pool (stub no-op)
These are stubs since U-Boot doesn't use memory pools.
Co-developed-by: Claude Opus 4.5 <noreply@anthropic.com>
Signed-off-by: Simon Glass <simon.glass@canonical.com>
---
fs/ext4l/ext4_uboot.h | 8 ++----
include/linux/mempool.h | 57 +++++++++++++++++++++++++++++++++++++++++
2 files changed, 59 insertions(+), 6 deletions(-)
create mode 100644 include/linux/mempool.h
@@ -1795,12 +1795,8 @@ bool __folio_start_writeback(struct folio *folio, bool keep_write);
* Stubs for readpage.c
*/
-/* mempool - memory pool stubs */
-typedef void *mempool_t;
-#define mempool_alloc(pool, gfp) ({ (void)(pool); (void)(gfp); (void *)NULL; })
-#define mempool_free(elem, pool) do { (void)(elem); (void)(pool); } while (0)
-#define mempool_create_slab_pool(n, c) ({ (void)(n); (void)(c); (mempool_t *)NULL; })
-#define mempool_destroy(pool) do { (void)(pool); } while (0)
+/* mempool is now in linux/mempool.h */
+#include <linux/mempool.h>
/* folio read operations */
#define folio_end_read(f, success) do { (void)(f); (void)(success); } while (0)
new file mode 100644
@@ -0,0 +1,57 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Memory pool stubs for U-Boot
+ *
+ * U-Boot doesn't have memory pools, so these are stubs.
+ */
+#ifndef _LINUX_MEMPOOL_H
+#define _LINUX_MEMPOOL_H
+
+#include <linux/types.h>
+
+/**
+ * typedef mempool_t - memory pool handle
+ *
+ * U-Boot stub - memory pools are not used.
+ */
+typedef void *mempool_t;
+
+/**
+ * mempool_alloc() - allocate element from pool
+ * @pool: memory pool
+ * @gfp: allocation flags
+ *
+ * U-Boot stub - always returns NULL.
+ */
+#define mempool_alloc(pool, gfp) \
+ ({ (void)(pool); (void)(gfp); (void *)NULL; })
+
+/**
+ * mempool_free() - free element back to pool
+ * @elem: element to free
+ * @pool: memory pool
+ *
+ * U-Boot stub - no-op.
+ */
+#define mempool_free(elem, pool) \
+ do { (void)(elem); (void)(pool); } while (0)
+
+/**
+ * mempool_create_slab_pool() - create a memory pool backed by a slab cache
+ * @min_nr: minimum number of elements
+ * @cache: slab cache
+ *
+ * U-Boot stub - always returns NULL.
+ */
+#define mempool_create_slab_pool(min_nr, cache) \
+ ({ (void)(min_nr); (void)(cache); (mempool_t *)NULL; })
+
+/**
+ * mempool_destroy() - destroy a memory pool
+ * @pool: memory pool to destroy
+ *
+ * U-Boot stub - no-op.
+ */
+#define mempool_destroy(pool) do { (void)(pool); } while (0)
+
+#endif /* _LINUX_MEMPOOL_H */