return ret;
 }
 
+static ssize_t dbgfs_kdamond_pid_read(struct file *file,
+               char __user *buf, size_t count, loff_t *ppos)
+{
+       struct damon_ctx *ctx = file->private_data;
+       char *kbuf;
+       ssize_t len;
+
+       kbuf = kmalloc(count, GFP_KERNEL);
+       if (!kbuf)
+               return -ENOMEM;
+
+       mutex_lock(&ctx->kdamond_lock);
+       if (ctx->kdamond)
+               len = scnprintf(kbuf, count, "%d\n", ctx->kdamond->pid);
+       else
+               len = scnprintf(kbuf, count, "none\n");
+       mutex_unlock(&ctx->kdamond_lock);
+       if (!len)
+               goto out;
+       len = simple_read_from_buffer(buf, count, ppos, kbuf, len);
+
+out:
+       kfree(kbuf);
+       return len;
+}
+
 static int damon_dbgfs_open(struct inode *inode, struct file *file)
 {
        file->private_data = inode->i_private;
        .write = dbgfs_target_ids_write,
 };
 
+static const struct file_operations kdamond_pid_fops = {
+       .open = damon_dbgfs_open,
+       .read = dbgfs_kdamond_pid_read,
+};
+
 static void dbgfs_fill_ctx_dir(struct dentry *dir, struct damon_ctx *ctx)
 {
-       const char * const file_names[] = {"attrs", "target_ids"};
-       const struct file_operations *fops[] = {&attrs_fops, &target_ids_fops};
+       const char * const file_names[] = {"attrs", "target_ids",
+               "kdamond_pid"};
+       const struct file_operations *fops[] = {&attrs_fops, &target_ids_fops,
+               &kdamond_pid_fops};
        int i;
 
        for (i = 0; i < ARRAY_SIZE(file_names); i++)