]> git.baikalelectronics.ru Git - kernel.git/commitdiff
mm/damon/{dbgfs,sysfs}: move target_has_pid() from dbgfs to damon.h
authorSeongJae Park <sj@kernel.org>
Mon, 6 Jun 2022 18:23:06 +0000 (18:23 +0000)
committerakpm <akpm@linux-foundation.org>
Mon, 4 Jul 2022 01:08:38 +0000 (18:08 -0700)
The function for knowing if given monitoring context's targets will have
pid or not is defined and used in dbgfs only.  However, the logic is also
needed for sysfs.  This commit moves the code to damon.h and makes both
dbgfs and sysfs to use it.

Link: https://lkml.kernel.org/r/20220606182310.48781-3-sj@kernel.org
Signed-off-by: SeongJae Park <sj@kernel.org>
Cc: Jonathan Corbet <corbet@lwn.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
include/linux/damon.h
mm/damon/dbgfs.c
mm/damon/sysfs.c

index 2765c7d99beb3f096f6960fe0d8557309d59e4f5..b9aae19fab3e9fe444b6337b8aa14e697449d121 100644 (file)
@@ -525,6 +525,12 @@ bool damon_is_registered_ops(enum damon_ops_id id);
 int damon_register_ops(struct damon_operations *ops);
 int damon_select_ops(struct damon_ctx *ctx, enum damon_ops_id id);
 
+static inline bool damon_target_has_pid(const struct damon_ctx *ctx)
+{
+       return ctx->ops.id == DAMON_OPS_VADDR || ctx->ops.id == DAMON_OPS_FVADDR;
+}
+
+
 int damon_start(struct damon_ctx **ctxs, int nr_ctxs, bool exclusive);
 int damon_stop(struct damon_ctx **ctxs, int nr_ctxs);
 
index a0dab8b5e45f2fbf8fb700160c5f8913d79ef1bd..5ae81092730976f5a821fd42378b62025b241a01 100644 (file)
@@ -275,11 +275,6 @@ out:
        return ret;
 }
 
-static inline bool target_has_pid(const struct damon_ctx *ctx)
-{
-       return ctx->ops.id == DAMON_OPS_VADDR;
-}
-
 static ssize_t sprint_target_ids(struct damon_ctx *ctx, char *buf, ssize_t len)
 {
        struct damon_target *t;
@@ -288,7 +283,7 @@ static ssize_t sprint_target_ids(struct damon_ctx *ctx, char *buf, ssize_t len)
        int rc;
 
        damon_for_each_target(t, ctx) {
-               if (target_has_pid(ctx))
+               if (damon_target_has_pid(ctx))
                        /* Show pid numbers to debugfs users */
                        id = pid_vnr(t->pid);
                else
@@ -415,7 +410,7 @@ static int dbgfs_set_targets(struct damon_ctx *ctx, ssize_t nr_targets,
        struct damon_target *t, *next;
 
        damon_for_each_target_safe(t, next, ctx) {
-               if (target_has_pid(ctx))
+               if (damon_target_has_pid(ctx))
                        put_pid(t->pid);
                damon_destroy_target(t);
        }
@@ -425,11 +420,11 @@ static int dbgfs_set_targets(struct damon_ctx *ctx, ssize_t nr_targets,
                if (!t) {
                        damon_for_each_target_safe(t, next, ctx)
                                damon_destroy_target(t);
-                       if (target_has_pid(ctx))
+                       if (damon_target_has_pid(ctx))
                                dbgfs_put_pids(pids, nr_targets);
                        return -ENOMEM;
                }
-               if (target_has_pid(ctx))
+               if (damon_target_has_pid(ctx))
                        t->pid = pids[i];
                damon_add_target(ctx, t);
        }
@@ -722,7 +717,7 @@ static void dbgfs_before_terminate(struct damon_ctx *ctx)
 {
        struct damon_target *t, *next;
 
-       if (!target_has_pid(ctx))
+       if (!damon_target_has_pid(ctx))
                return;
 
        mutex_lock(&ctx->kdamond_lock);
index 09f9e8ca3d1faeda58124669025b5fcc190dcea2..8810e6abdb06c64bd9e1eac68a0bcc975f8f245b 100644 (file)
@@ -2136,8 +2136,7 @@ static void damon_sysfs_destroy_targets(struct damon_ctx *ctx)
        struct damon_target *t, *next;
 
        damon_for_each_target_safe(t, next, ctx) {
-               if (ctx->ops.id == DAMON_OPS_VADDR ||
-                               ctx->ops.id == DAMON_OPS_FVADDR)
+               if (damon_target_has_pid(ctx))
                        put_pid(t->pid);
                damon_destroy_target(t);
        }
@@ -2181,8 +2180,7 @@ static int damon_sysfs_add_target(struct damon_sysfs_target *sys_target,
 
        if (!t)
                return -ENOMEM;
-       if (ctx->ops.id == DAMON_OPS_VADDR ||
-                       ctx->ops.id == DAMON_OPS_FVADDR) {
+       if (damon_target_has_pid(ctx)) {
                t->pid = find_get_pid(sys_target->pid);
                if (!t->pid)
                        goto destroy_targets_out;
@@ -2210,7 +2208,7 @@ static struct damon_target *damon_sysfs_existing_target(
        struct pid *pid;
        struct damon_target *t;
 
-       if (ctx->ops.id == DAMON_OPS_PADDR) {
+       if (!damon_target_has_pid(ctx)) {
                /* Up to only one target for paddr could exist */
                damon_for_each_target(t, ctx)
                        return t;