sysfs-common.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /*
  3. * Common Primitives for DAMON Sysfs Interface
  4. *
  5. * Author: SeongJae Park <[email protected]>
  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 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 struct kobj_type damon_sysfs_schemes_ktype;
  31. int damon_sysfs_set_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. bool damos_sysfs_regions_upd_done(void);
  40. int damon_sysfs_schemes_update_regions_stop(struct damon_ctx *ctx);
  41. int damon_sysfs_schemes_clear_regions(
  42. struct damon_sysfs_schemes *sysfs_schemes,
  43. struct damon_ctx *ctx);