Commit | Line | Data |
---|---|---|
39240595 SP |
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; | |
d332fe11 SP |
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 | ||
e56397e8 | 24 | extern const struct kobj_type damon_sysfs_ul_range_ktype; |
c8e7b4d0 SP |
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 | ||
e56397e8 | 39 | extern const struct kobj_type damon_sysfs_schemes_ktype; |
c8e7b4d0 SP |
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); | |
f1d13cac SP |
47 | |
48 | int damon_sysfs_schemes_update_regions_start( | |
49 | struct damon_sysfs_schemes *sysfs_schemes, | |
6ad243b8 | 50 | struct damon_ctx *ctx, bool total_bytes_only); |
f1d13cac | 51 | |
6a080670 SP |
52 | void damos_sysfs_mark_finished_regions_updates(struct damon_ctx *ctx); |
53 | ||
76126332 SP |
54 | bool damos_sysfs_regions_upd_done(void); |
55 | ||
f1d13cac | 56 | int damon_sysfs_schemes_update_regions_stop(struct damon_ctx *ctx); |
772c15e5 SP |
57 | |
58 | int damon_sysfs_schemes_clear_regions( | |
59 | struct damon_sysfs_schemes *sysfs_schemes, | |
60 | struct damon_ctx *ctx); | |
d91beaa5 | 61 | |
9e736fdf | 62 | int damos_sysfs_set_quota_scores(struct damon_sysfs_schemes *sysfs_schemes, |
d91beaa5 | 63 | struct damon_ctx *ctx); |
c71f8a71 SP |
64 | |
65 | void damos_sysfs_update_effective_quotas( | |
66 | struct damon_sysfs_schemes *sysfs_schemes, | |
67 | struct damon_ctx *ctx); |