1 | /* SPDX-License-Identifier: GPL-2.0 */ |
---|---|
2 | /* |
3 | * Common Primitives for DAMON Sysfs Interface |
4 | * |
5 | * Author: SeongJae Park <sj@kernel.org> |
6 | */ |
7 | |
8 | #include <linux/damon.h> |
9 | #include <linux/kobject.h> |
10 | |
11 | extern struct mutex damon_sysfs_lock; |
12 | |
13 | struct damon_sysfs_ul_range { |
14 | struct kobject kobj; |
15 | unsigned long min; |
16 | unsigned long max; |
17 | }; |
18 | |
19 | struct damon_sysfs_ul_range *damon_sysfs_ul_range_alloc( |
20 | unsigned long min, |
21 | unsigned long max); |
22 | void damon_sysfs_ul_range_release(struct kobject *kobj); |
23 | |
24 | extern const struct kobj_type damon_sysfs_ul_range_ktype; |
25 | |
26 | /* |
27 | * schemes directory |
28 | */ |
29 | |
30 | struct damon_sysfs_schemes { |
31 | struct kobject kobj; |
32 | struct damon_sysfs_scheme **schemes_arr; |
33 | int nr; |
34 | }; |
35 | |
36 | struct damon_sysfs_schemes *damon_sysfs_schemes_alloc(void); |
37 | void damon_sysfs_schemes_rm_dirs(struct damon_sysfs_schemes *schemes); |
38 | |
39 | extern const struct kobj_type damon_sysfs_schemes_ktype; |
40 | |
41 | int damon_sysfs_set_schemes(struct damon_ctx *ctx, |
42 | struct damon_sysfs_schemes *sysfs_schemes); |
43 | |
44 | void damon_sysfs_schemes_update_stats( |
45 | struct damon_sysfs_schemes *sysfs_schemes, |
46 | struct damon_ctx *ctx); |
47 | |
48 | int damon_sysfs_schemes_update_regions_start( |
49 | struct damon_sysfs_schemes *sysfs_schemes, |
50 | struct damon_ctx *ctx, bool total_bytes_only); |
51 | |
52 | void damos_sysfs_mark_finished_regions_updates(struct damon_ctx *ctx); |
53 | |
54 | bool damos_sysfs_regions_upd_done(void); |
55 | |
56 | int damon_sysfs_schemes_update_regions_stop(struct damon_ctx *ctx); |
57 | |
58 | int damon_sysfs_schemes_clear_regions( |
59 | struct damon_sysfs_schemes *sysfs_schemes, |
60 | struct damon_ctx *ctx); |
61 | |
62 | int damos_sysfs_set_quota_scores(struct damon_sysfs_schemes *sysfs_schemes, |
63 | struct damon_ctx *ctx); |
64 | |
65 | void damos_sysfs_update_effective_quotas( |
66 | struct damon_sysfs_schemes *sysfs_schemes, |
67 | struct damon_ctx *ctx); |
68 |