| // SPDX-License-Identifier: GPL-2.0 | |
| /* | |
| * Common Code for DAMON Modules | |
| * | |
| * Author: SeongJae Park <sj@kernel.org> | |
| */ | |
| #include <linux/damon.h> | |
| #include "modules-common.h" | |
| /* | |
| * Allocate, set, and return a DAMON context for the physical address space. | |
| * @ctxp: Pointer to save the point to the newly created context | |
| * @targetp: Pointer to save the point to the newly created target | |
| */ | |
| int damon_modules_new_paddr_ctx_target(struct damon_ctx **ctxp, | |
| struct damon_target **targetp) | |
| { | |
| struct damon_ctx *ctx; | |
| struct damon_target *target; | |
| ctx = damon_new_ctx(); | |
| if (!ctx) | |
| return -ENOMEM; | |
| if (damon_select_ops(ctx, DAMON_OPS_PADDR)) { | |
| damon_destroy_ctx(ctx); | |
| return -EINVAL; | |
| } | |
| target = damon_new_target(); | |
| if (!target) { | |
| damon_destroy_ctx(ctx); | |
| return -ENOMEM; | |
| } | |
| damon_add_target(ctx, target); | |
| *ctxp = ctx; | |
| *targetp = target; | |
| return 0; | |
| } |