From patchwork Sat Jan 17 01:14:25 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 1563 Return-Path: X-Original-To: u-boot-concept@u-boot.org Delivered-To: u-boot-concept@u-boot.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1768612516; bh=CP1tPqcB4agdCxeFXzWSAbfhLq5bXNh8wG1UsrHQoRA=; h=From:To:Date:In-Reply-To:References:CC:Subject:List-Id: List-Archive:List-Help:List-Owner:List-Post:List-Subscribe: List-Unsubscribe:From; b=UCxWG0yf/pNm4bpajRUCUGsJuvX2em2y7YnForCNQWjmNzdVqLqElIvBX33Da7rtg fpRkMG2Q8YCJ9B7el3qLVL+5mJP7jfyYdagKmyHG6abFl9NxikiwuFrDqYdOr5ODgB 26GjK9MeMMgoNAo8D8fYNUu+rDUkBH/5OJWMMdv5FPqTzBtdLPxHD6og/gINASYjvN r0+Rc4iktwH21M8SfxVfQOU76MwBp3qqiSozXi5DtmXo6LR0Sh+Ivn9Ap60jyWc8DD WEZSxamaVCjYXmuKEeSabJ/CYRgrATer3VWh500jvgufgBsKeb92o2lJvVOanSGn83 +im9cR8f8gnlw== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 0F27B693FE for ; Fri, 16 Jan 2026 18:15:16 -0700 (MST) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10024) with ESMTP id k6ZKI4zVl-io for ; Fri, 16 Jan 2026 18:15:16 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1768612515; bh=CP1tPqcB4agdCxeFXzWSAbfhLq5bXNh8wG1UsrHQoRA=; h=From:To:Date:In-Reply-To:References:CC:Subject:List-Id: List-Archive:List-Help:List-Owner:List-Post:List-Subscribe: List-Unsubscribe:From; b=ncU4uOcV2hUHvEiOFYgVcWBQnWe69cGWSC0mrz/jyAr4KGvvDsyEfTccwP8wF85Eb bQ5ljnkz9c3l+3sGeJYSaYUQwPe3hlyLFM24DyvFAUuOJ38HMksop4GjadbUWC0u7a b3Wtilh+oBpcKT+L/wgovFKf4m1uoma+Jc6xtCInetd4OjuYvbm9CQFq56cgkelX9U vvDddz/btFaS4j0v0pHiV2cK9MCKVJW5dQqtjarem9ouRzb65uWXtQIEfzwxcI4Dil Xh1NNWKjy1wJS/NuGs9jotTE6j4jDWd+q1l9YL0ufPKpyumkJdtpKMNbsgibVlOt/V fXX9vkO4zX1bg== Received: from mail.u-boot.org (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id F24D7693E9 for ; Fri, 16 Jan 2026 18:15:15 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1768612514; bh=cVQZAzbwzFN96SnPa0l8XCzA0YFUBwtuevopiMjaXT4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=HyUgsqNCUHrolwweNRaZeLCZKmmeNjXKjvxi9bKrxjHXTpFv3IjLgEqtg9dQDNwmk B4qG4XC6xUznqrXsZpDrhyCaLGCrthKnbULzmVcNQGXj68VnNcIl8wzkJ6wMZ7OSw/ 9/er+wJqoZb9qs5KFLh/kvhBOLNqhb76XD25JLu9g/zTKLS9tC632jWng6Pxa3iml5 vu+TPh9s5Mb46S35ZHuexDoC/OlBNsABgtGwz34Xe52dHykgDO7IYE3F3sqfqUAuUm z1GPyXXHwoY2UDEhaWuW5Xj7EyQKqvIqJk0jNKV4YyV1vMbvmHOhfhC/NT8MsYFGwQ i8L9+8kAZZoiA== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id BD68B693E9; Fri, 16 Jan 2026 18:15:14 -0700 (MST) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10026) with ESMTP id UDXo68Wma200; Fri, 16 Jan 2026 18:15:14 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1768612510; bh=RgomLFgoMcwH2Z29Du5MvsvrvxKr8UDU2np+0Ui4yLs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=MX8mQ+BVnginxDjYqckTcVkEWdyDgES/S7QdqxLPuHCR/avPALLaxCe3lL1Icbl0B VmEJo/nl6uJkZH45tLJP3CnxmYhXC9EE3g/SKFNM06BMJYS0ZDTMjW7joWZWLBZjRA /qVhAe8boSTY849G1Dcyq4NnXvWTu7v0BdFOu7LX4rf8Iynxc9RndwzEhBtYMdAp+R 9J1FTDpza2f4zywMMBY9dfIEkrZuWskz80rBdRhCB8jb6Jtw8kFbETcLGqaMBtc7lm 7oWthN62QYJQyPe0TKsMC1cruiXRu95NXQLtPxPgm1zcLsIhUEURaSFgznqNLg3tEs NGSHhsuD9x/qA== Received: from u-boot.org (unknown [73.34.74.121]) by mail.u-boot.org (Postfix) with ESMTPSA id 6CB18693E0; Fri, 16 Jan 2026 18:15:10 -0700 (MST) From: Simon Glass To: U-Boot Concept Date: Fri, 16 Jan 2026 18:14:25 -0700 Message-ID: <20260117011448.3007171-4-sjg@u-boot.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260117011448.3007171-1-sjg@u-boot.org> References: <20260117011448.3007171-1-sjg@u-boot.org> MIME-Version: 1.0 Message-ID-Hash: P4DHBGRU5HAYZTUJFTSSDD6DEZK2V6RU X-Message-ID-Hash: P4DHBGRU5HAYZTUJFTSSDD6DEZK2V6RU X-MailFrom: sjg@u-boot.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Simon Glass , "Claude Opus 4 . 5" X-Mailman-Version: 3.3.10 Precedence: list Subject: [Concept] [PATCH 03/19] linux: Add shrinker.h header with memory-reclaim stubs List-Id: Discussion and patches related to U-Boot Concept Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Simon Glass U-Boot does not have memory pressure or reclaim infrastructure. The ext4l filesystem uses shrinker structures which are currently defined in ext4_uboot.h. Create a new linux/shrinker.h header file with stub implementations to better match the Linux kernel structure. Types and functions moved: - struct shrink_control - struct shrinker - shrinker_alloc() - shrinker_register() - shrinker_free() Co-developed-by: Claude Opus 4.5 Signed-off-by: Simon Glass --- fs/ext4l/ext4_uboot.h | 32 +--------------- include/linux/shrinker.h | 83 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+), 30 deletions(-) create mode 100644 include/linux/shrinker.h diff --git a/fs/ext4l/ext4_uboot.h b/fs/ext4l/ext4_uboot.h index 47236e63911..d04a843175b 100644 --- a/fs/ext4l/ext4_uboot.h +++ b/fs/ext4l/ext4_uboot.h @@ -992,36 +992,8 @@ static inline int in_range(unsigned long val, unsigned long start, /* extents_status.c stubs */ -/* shrinker - memory reclaim infrastructure (stub for U-Boot) */ -struct shrink_control { - gfp_t gfp_mask; - int nid; - unsigned long nr_to_scan; - unsigned long nr_scanned; -}; - -struct shrinker { - unsigned long (*count_objects)(struct shrinker *, struct shrink_control *); - unsigned long (*scan_objects)(struct shrinker *, struct shrink_control *); - void *private_data; -}; - -static inline struct shrinker *shrinker_alloc(unsigned int flags, - const char *fmt, ...) -{ - /* Return static dummy - U-Boot doesn't need memory reclamation */ - static struct shrinker dummy_shrinker; - - return &dummy_shrinker; -} - -static inline void shrinker_register(struct shrinker *s) -{ -} - -static inline void shrinker_free(struct shrinker *s) -{ -} +/* shrinker - use linux/shrinker.h */ +#include /* ktime functions - use linux/ktime.h */ #include diff --git a/include/linux/shrinker.h b/include/linux/shrinker.h new file mode 100644 index 00000000000..b95df9d6dc9 --- /dev/null +++ b/include/linux/shrinker.h @@ -0,0 +1,83 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Shrinker interface stub for U-Boot + * + * U-Boot doesn't have memory pressure or reclaim, so these are stubs. + */ +#ifndef _LINUX_SHRINKER_H +#define _LINUX_SHRINKER_H + +#include + +/** + * struct shrink_control - control structure for shrinker callbacks + * @gfp_mask: allocation flags + * @nid: NUMA node being shrunk + * @nr_to_scan: number of objects to scan + * @nr_scanned: number of objects scanned + * + * Stub for U-Boot - memory reclaim is not needed. + */ +struct shrink_control { + gfp_t gfp_mask; + int nid; + unsigned long nr_to_scan; + unsigned long nr_scanned; +}; + +struct shrinker; + +/** + * struct shrinker - memory reclaim callback structure + * @count_objects: callback to count freeable objects + * @scan_objects: callback to scan and free objects + * @private_data: private data for the shrinker + * + * Stub for U-Boot - memory reclaim is not needed. + */ +struct shrinker { + unsigned long (*count_objects)(struct shrinker *, + struct shrink_control *); + unsigned long (*scan_objects)(struct shrinker *, + struct shrink_control *); + void *private_data; +}; + +/** + * shrinker_alloc() - allocate a shrinker structure + * @flags: shrinker flags + * @fmt: format string for name (unused) + * + * U-Boot stub - returns a static dummy shrinker. + * + * Return: pointer to dummy shrinker + */ +static inline struct shrinker *shrinker_alloc(unsigned int flags, + const char *fmt, ...) +{ + static struct shrinker dummy_shrinker; + + return &dummy_shrinker; +} + +/** + * shrinker_register() - register a shrinker + * @s: shrinker to register + * + * U-Boot stub - no-op. + */ +static inline void shrinker_register(struct shrinker *s) +{ +} + +/** + * shrinker_free() - free a shrinker + * @s: shrinker to free + * + * U-Boot stub - no-op. + */ +static inline void shrinker_free(struct shrinker *s) +{ +} + +#endif /* _LINUX_SHRINKER_H */