Loading...
/* 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 <linux/types.h> /** * 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 */ |