Lines Matching refs:ctx

977 static bool damon_sysfs_ctx_running(struct damon_ctx *ctx)
981 mutex_lock(&ctx->kdamond_lock);
982 running = ctx->kdamond != NULL;
983 mutex_unlock(&ctx->kdamond_lock);
1058 struct damon_ctx *ctx = kdamond->damon_ctx;
1061 if (!ctx)
1064 running = damon_sysfs_ctx_running(ctx);
1071 static int damon_sysfs_set_attrs(struct damon_ctx *ctx,
1084 return damon_set_attrs(ctx, &attrs);
1087 static void damon_sysfs_destroy_targets(struct damon_ctx *ctx)
1090 bool has_pid = damon_target_has_pid(ctx);
1092 damon_for_each_target_safe(t, next, ctx) {
1130 struct damon_ctx *ctx)
1137 damon_add_target(ctx, t);
1138 if (damon_target_has_pid(ctx)) {
1149 damon_sysfs_destroy_targets(ctx);
1172 struct damon_ctx *ctx,
1177 if (damon_target_has_pid(ctx)) {
1194 static int damon_sysfs_set_targets(struct damon_ctx *ctx,
1201 if (ctx->ops.id == DAMON_OPS_PADDR && sysfs_targets->nr > 1)
1204 damon_for_each_target_safe(t, next, ctx) {
1206 err = damon_sysfs_update_target(t, ctx,
1211 if (damon_target_has_pid(ctx))
1221 err = damon_sysfs_add_target(st, ctx);
1230 static void damon_sysfs_before_terminate(struct damon_ctx *ctx)
1239 if (kdamond && ctx == kdamond->damon_ctx &&
1243 damon_sysfs_schemes_update_regions_stop(ctx);
1248 if (!damon_target_has_pid(ctx))
1251 mutex_lock(&ctx->kdamond_lock);
1252 damon_for_each_target_safe(t, next, ctx) {
1256 mutex_unlock(&ctx->kdamond_lock);
1270 struct damon_ctx *ctx = kdamond->damon_ctx;
1272 if (!ctx)
1275 kdamond->contexts->contexts_arr[0]->schemes, ctx);
1282 struct damon_ctx *ctx = kdamond->damon_ctx;
1284 if (!ctx)
1287 kdamond->contexts->contexts_arr[0]->schemes, ctx,
1294 struct damon_ctx *ctx = kdamond->damon_ctx;
1296 if (!ctx)
1298 return damon_sysfs_schemes_update_regions_stop(ctx);
1304 struct damon_ctx *ctx = kdamond->damon_ctx;
1306 if (!ctx)
1309 kdamond->contexts->contexts_arr[0]->schemes, ctx);
1319 static int damon_sysfs_apply_inputs(struct damon_ctx *ctx,
1324 err = damon_select_ops(ctx, sys_ctx->ops_id);
1327 err = damon_sysfs_set_attrs(ctx, sys_ctx->attrs);
1330 err = damon_sysfs_set_targets(ctx, sys_ctx->targets);
1333 return damon_sysfs_set_schemes(ctx, sys_ctx->schemes);
1415 struct damon_ctx *ctx = damon_new_ctx();
1418 if (!ctx)
1421 err = damon_sysfs_apply_inputs(ctx, sys_ctx);
1423 damon_destroy_ctx(ctx);
1427 ctx->callback.after_wmarks_check = damon_sysfs_cmd_request_callback;
1428 ctx->callback.after_aggregation = damon_sysfs_cmd_request_callback;
1429 ctx->callback.before_terminate = damon_sysfs_before_terminate;
1430 return ctx;
1435 struct damon_ctx *ctx;
1450 ctx = damon_sysfs_build_ctx(kdamond->contexts->contexts_arr[0]);
1451 if (IS_ERR(ctx))
1452 return PTR_ERR(ctx);
1453 err = damon_start(&ctx, 1, false);
1455 damon_destroy_ctx(ctx);
1458 kdamond->damon_ctx = ctx;
1560 struct damon_ctx *ctx;
1565 ctx = kdamond->damon_ctx;
1566 if (!ctx)
1569 mutex_lock(&ctx->kdamond_lock);
1570 if (ctx->kdamond)
1571 pid = ctx->kdamond->pid;
1572 mutex_unlock(&ctx->kdamond_lock);