1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * Common Code for DAMON Sysfs Interface 4 */ 5 6 #include <linux/damon.h> 7 #include <linux/kobject.h> 8 9 extern struct mutex damon_sysfs_lock; 10 11 struct damon_sysfs_ul_range { 12 struct kobject kobj; 13 unsigned long min; 14 unsigned long max; 15 }; 16 17 struct damon_sysfs_ul_range *damon_sysfs_ul_range_alloc( 18 unsigned long min, 19 unsigned long max); 20 void damon_sysfs_ul_range_release(struct kobject *kobj); 21 22 extern const struct kobj_type damon_sysfs_ul_range_ktype; 23 24 /* 25 * schemes directory 26 */ 27 28 struct damon_sysfs_schemes { 29 struct kobject kobj; 30 struct damon_sysfs_scheme **schemes_arr; 31 int nr; 32 }; 33 34 struct damon_sysfs_schemes *damon_sysfs_schemes_alloc(void); 35 void damon_sysfs_schemes_rm_dirs(struct damon_sysfs_schemes *schemes); 36 37 extern const struct kobj_type damon_sysfs_schemes_ktype; 38 39 int damon_sysfs_add_schemes(struct damon_ctx *ctx, 40 struct damon_sysfs_schemes *sysfs_schemes); 41 42 void damon_sysfs_schemes_update_stats( 43 struct damon_sysfs_schemes *sysfs_schemes, 44 struct damon_ctx *ctx); 45 46 void damos_sysfs_populate_region_dir(struct damon_sysfs_schemes *sysfs_schemes, 47 struct damon_ctx *ctx, struct damon_target *t, 48 struct damon_region *r, struct damos *s, 49 bool total_bytes_only, unsigned long sz_filter_passed); 50 51 int damon_sysfs_schemes_clear_regions( 52 struct damon_sysfs_schemes *sysfs_schemes); 53 54 int damos_sysfs_set_quota_scores(struct damon_sysfs_schemes *sysfs_schemes, 55 struct damon_ctx *ctx); 56 57 void damos_sysfs_update_effective_quotas( 58 struct damon_sysfs_schemes *sysfs_schemes, 59 struct damon_ctx *ctx); 60 61 int damon_sysfs_memcg_path_to_id(char *memcg_path, u64 *id); 62