]> git.sesse.net Git - bcachefs-tools-debian/blob - include/linux/shrinker.h
d0a84794e96c80bbb9dcca643de3da02eea1aeb5
[bcachefs-tools-debian] / include / linux / shrinker.h
1 #ifndef __TOOLS_LINUX_SHRINKER_H
2 #define __TOOLS_LINUX_SHRINKER_H
3
4 #include <linux/list.h>
5 #include <linux/types.h>
6
7 struct shrink_control {
8         gfp_t gfp_mask;
9         unsigned long nr_to_scan;
10 };
11
12 #define SHRINK_STOP (~0UL)
13
14 struct seq_buf;
15 struct shrinker {
16         unsigned long (*count_objects)(struct shrinker *,
17                                        struct shrink_control *sc);
18         unsigned long (*scan_objects)(struct shrinker *,
19                                       struct shrink_control *sc);
20         void (*to_text)(struct seq_buf *, struct shrinker *);
21
22         int seeks;      /* seeks to recreate an obj */
23         long batch;     /* reclaim batch size, 0 = default */
24         struct list_head list;
25         void    *private_data;
26 };
27
28 void shrinker_free(struct shrinker *);
29 struct shrinker *shrinker_alloc(unsigned int, const char *, ...);
30
31 int shrinker_register(struct shrinker *);
32
33 void run_shrinkers(gfp_t gfp_mask, bool);
34
35 #endif /* __TOOLS_LINUX_SHRINKER_H */