In-kernel DAMON user code is required to configure the monitoring context (struct damon_ctx) with proper monitoring primitives (struct damon_primitive). This makes the user code dependent to all supporting monitoring primitives. For example, DAMON debugfs interface depends on both DAMON_VADDR and DAMON_PADDR, though some users have interest in only one use case. As more monitoring primitives are introduced, the problem will be bigger. To minimize such unnecessary dependency, this patchset makes monitoring primitives can be registered by the implemnting code and later dynamically searched and selected by the user code. In addition to that, this patchset renames monitoring primitives to monitoring operations, which is more easy to intuitively understand what it means and how it would be structed. SeongJae Park (8): mm/damon: Rename damon_primitives to damon_operations mm/damon: Let monitoring operations can be registered and selected mm/damon/paddr,vaddr: Register themselves to DAMON in subsys_initcall mm/damon/reclaim: Use damon_select_ops() instead of damon_{v,p}a_set_operations() mm/damon/dbgfs: Use damon_select_ops() instead of damon_{v,p}a_set_operations() mm/damon/dbgfs: Use operations id for knowing if the target has pid mm/damon/dbgfs-test: Fix is_target_id() change mm/damon/paddr,vaddr: Remove damon_{p,v}a_{target_valid,set_operations}() include/linux/damon.h | 72 ++++++------ mm/damon/Kconfig | 12 +- mm/damon/Makefile | 4 +- mm/damon/core.c | 131 ++++++++++++++++------ mm/damon/dbgfs-test.h | 4 +- mm/damon/dbgfs.c | 20 +++- mm/damon/{prmtv-common.c => ops-common.c} | 2 +- mm/damon/{prmtv-common.h => ops-common.h} | 0 mm/damon/paddr.c | 36 +++--- mm/damon/reclaim.c | 4 +- mm/damon/vaddr-test.h | 2 +- mm/damon/vaddr.c | 33 +++--- 12 files changed, 209 insertions(+), 111 deletions(-) rename mm/damon/{prmtv-common.c => ops-common.c} (99%) rename mm/damon/{prmtv-common.h => ops-common.h} (100%) -- 2.17.1