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, | |
50 | struct damon_ctx *ctx); | |
51 | ||
52 | int damon_sysfs_schemes_update_regions_stop(struct damon_ctx *ctx); | |
772c15e5 SP |
53 | |
54 | int damon_sysfs_schemes_clear_regions( | |
55 | struct damon_sysfs_schemes *sysfs_schemes, | |
56 | struct damon_ctx *ctx); |