Extend DAMON probe filter for the existence of data attribute reports for the probing memory. Define a new filter type, REPORT_MADE, for the purpose. Add a union argument for specifying the type of the reports for the filter. Update the new argument for the new type when new filter parameters of the type are committed. Signed-off-by: SJ Park --- include/linux/damon.h | 3 +++ mm/damon/core.c | 3 +++ 2 files changed, 6 insertions(+) diff --git a/include/linux/damon.h b/include/linux/damon.h index ca0135c6f6700..cce7d344c585b 100644 --- a/include/linux/damon.h +++ b/include/linux/damon.h @@ -804,6 +804,7 @@ struct damon_prep { * @DAMON_FILTER_TYPE_PGIDLE_SET: Pgidle is set. * @DAMON_FILTER_TYPE_HUGEPAGE_SIZE: Page is part of a hugepage. * @DAMON_FILTER_TYPE_ACTIVE: LRU-active pages. + * @DAMON_FILTER_TYPE_REPORT_MADE: Report is submitted. */ enum damon_filter_type { DAMON_FILTER_TYPE_ANON, @@ -812,6 +813,7 @@ enum damon_filter_type { DAMON_FILTER_TYPE_PGIDLE_SET, DAMON_FILTER_TYPE_HUGEPAGE_SIZE, DAMON_FILTER_TYPE_ACTIVE, + DAMON_FILTER_TYPE_REPORT_MADE, }; /** @@ -834,6 +836,7 @@ struct damon_filter { unsigned long range_min; unsigned long range_max; }; + enum damon_report_type report_type; }; /* private: */ /* Siblings list. */ diff --git a/mm/damon/core.c b/mm/damon/core.c index 06b85d00e38d9..c02c7fbc1d864 100644 --- a/mm/damon/core.c +++ b/mm/damon/core.c @@ -1834,6 +1834,9 @@ static int damon_commit_filter(struct damon_filter *dst, dst->range_min = src->range_min; dst->range_max = src->range_max; break; + case DAMON_FILTER_TYPE_REPORT_MADE: + dst->report_type = src->report_type; + break; default: break; } -- 2.47.3