sysfs-common.h 1.6 KB

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