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