sysfs-common.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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. #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. int damon_sysfs_schemes_update_regions_start(
  37. struct damon_sysfs_schemes *sysfs_schemes,
  38. struct damon_ctx *ctx, bool total_bytes_only);
  39. void damos_sysfs_mark_finished_regions_updates(struct damon_ctx *ctx);
  40. bool damos_sysfs_regions_upd_done(void);
  41. int damon_sysfs_schemes_update_regions_stop(struct damon_ctx *ctx);
  42. int damon_sysfs_schemes_clear_regions(
  43. struct damon_sysfs_schemes *sysfs_schemes,
  44. struct damon_ctx *ctx);
  45. int damos_sysfs_set_quota_scores(struct damon_sysfs_schemes *sysfs_schemes,
  46. struct damon_ctx *ctx);
  47. void damos_sysfs_update_effective_quotas(
  48. struct damon_sysfs_schemes *sysfs_schemes,
  49. struct damon_ctx *ctx);