mm/damon/core: reduce parameters for damon_set_attrs()
Number of parameters for 'damon_set_attrs()' is six. As it could be confusing and verbose, this commit reduces the number by receiving single pointer to a 'struct damon_attrs'. Link: https://lkml.kernel.org/r/20220913174449.50645-7-sj@kernel.org Signed-off-by: SeongJae Park <sj@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
cbeaa77b04
commit
bead3b0008
|
@ -540,9 +540,7 @@ unsigned int damon_nr_regions(struct damon_target *t);
|
||||||
|
|
||||||
struct damon_ctx *damon_new_ctx(void);
|
struct damon_ctx *damon_new_ctx(void);
|
||||||
void damon_destroy_ctx(struct damon_ctx *ctx);
|
void damon_destroy_ctx(struct damon_ctx *ctx);
|
||||||
int damon_set_attrs(struct damon_ctx *ctx, unsigned long sample_int,
|
int damon_set_attrs(struct damon_ctx *ctx, struct damon_attrs *attrs);
|
||||||
unsigned long aggr_int, unsigned long ops_upd_int,
|
|
||||||
unsigned long min_nr_reg, unsigned long max_nr_reg);
|
|
||||||
int damon_set_schemes(struct damon_ctx *ctx,
|
int damon_set_schemes(struct damon_ctx *ctx,
|
||||||
struct damos **schemes, ssize_t nr_schemes);
|
struct damos **schemes, ssize_t nr_schemes);
|
||||||
int damon_nr_running_ctxs(void);
|
int damon_nr_running_ctxs(void);
|
||||||
|
|
|
@ -428,32 +428,21 @@ void damon_destroy_ctx(struct damon_ctx *ctx)
|
||||||
/**
|
/**
|
||||||
* damon_set_attrs() - Set attributes for the monitoring.
|
* damon_set_attrs() - Set attributes for the monitoring.
|
||||||
* @ctx: monitoring context
|
* @ctx: monitoring context
|
||||||
* @sample_int: time interval between samplings
|
* @attrs: monitoring attributes
|
||||||
* @aggr_int: time interval between aggregations
|
|
||||||
* @ops_upd_int: time interval between monitoring operations updates
|
|
||||||
* @min_nr_reg: minimal number of regions
|
|
||||||
* @max_nr_reg: maximum number of regions
|
|
||||||
*
|
*
|
||||||
* This function should not be called while the kdamond is running.
|
* This function should not be called while the kdamond is running.
|
||||||
* Every time interval is in micro-seconds.
|
* Every time interval is in micro-seconds.
|
||||||
*
|
*
|
||||||
* Return: 0 on success, negative error code otherwise.
|
* Return: 0 on success, negative error code otherwise.
|
||||||
*/
|
*/
|
||||||
int damon_set_attrs(struct damon_ctx *ctx, unsigned long sample_int,
|
int damon_set_attrs(struct damon_ctx *ctx, struct damon_attrs *attrs)
|
||||||
unsigned long aggr_int, unsigned long ops_upd_int,
|
|
||||||
unsigned long min_nr_reg, unsigned long max_nr_reg)
|
|
||||||
{
|
{
|
||||||
if (min_nr_reg < 3)
|
if (attrs->min_nr_regions < 3)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
if (min_nr_reg > max_nr_reg)
|
if (attrs->min_nr_regions > attrs->max_nr_regions)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
ctx->attrs.sample_interval = sample_int;
|
ctx->attrs = *attrs;
|
||||||
ctx->attrs.aggr_interval = aggr_int;
|
|
||||||
ctx->attrs.ops_update_interval = ops_upd_int;
|
|
||||||
ctx->attrs.min_nr_regions = min_nr_reg;
|
|
||||||
ctx->attrs.max_nr_regions = max_nr_reg;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -67,7 +67,7 @@ static ssize_t dbgfs_attrs_write(struct file *file,
|
||||||
const char __user *buf, size_t count, loff_t *ppos)
|
const char __user *buf, size_t count, loff_t *ppos)
|
||||||
{
|
{
|
||||||
struct damon_ctx *ctx = file->private_data;
|
struct damon_ctx *ctx = file->private_data;
|
||||||
unsigned long s, a, r, minr, maxr;
|
struct damon_attrs attrs;
|
||||||
char *kbuf;
|
char *kbuf;
|
||||||
ssize_t ret;
|
ssize_t ret;
|
||||||
|
|
||||||
|
@ -76,7 +76,10 @@ static ssize_t dbgfs_attrs_write(struct file *file,
|
||||||
return PTR_ERR(kbuf);
|
return PTR_ERR(kbuf);
|
||||||
|
|
||||||
if (sscanf(kbuf, "%lu %lu %lu %lu %lu",
|
if (sscanf(kbuf, "%lu %lu %lu %lu %lu",
|
||||||
&s, &a, &r, &minr, &maxr) != 5) {
|
&attrs.sample_interval, &attrs.aggr_interval,
|
||||||
|
&attrs.ops_update_interval,
|
||||||
|
&attrs.min_nr_regions,
|
||||||
|
&attrs.max_nr_regions) != 5) {
|
||||||
ret = -EINVAL;
|
ret = -EINVAL;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
@ -87,7 +90,7 @@ static ssize_t dbgfs_attrs_write(struct file *file,
|
||||||
goto unlock_out;
|
goto unlock_out;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = damon_set_attrs(ctx, s, a, r, minr, maxr);
|
ret = damon_set_attrs(ctx, &attrs);
|
||||||
if (!ret)
|
if (!ret)
|
||||||
ret = count;
|
ret = count;
|
||||||
unlock_out:
|
unlock_out:
|
||||||
|
|
|
@ -350,13 +350,19 @@ static struct damos *damon_lru_sort_new_cold_scheme(unsigned int cold_thres)
|
||||||
|
|
||||||
static int damon_lru_sort_apply_parameters(void)
|
static int damon_lru_sort_apply_parameters(void)
|
||||||
{
|
{
|
||||||
|
struct damon_attrs attrs = {
|
||||||
|
.sample_interval = sample_interval,
|
||||||
|
.aggr_interval = aggr_interval,
|
||||||
|
.ops_update_interval = 0,
|
||||||
|
.min_nr_regions = min_nr_regions,
|
||||||
|
.max_nr_regions = max_nr_regions,
|
||||||
|
};
|
||||||
struct damos *scheme;
|
struct damos *scheme;
|
||||||
struct damon_addr_range addr_range;
|
struct damon_addr_range addr_range;
|
||||||
unsigned int hot_thres, cold_thres;
|
unsigned int hot_thres, cold_thres;
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
|
||||||
err = damon_set_attrs(ctx, sample_interval, aggr_interval, 0,
|
err = damon_set_attrs(ctx, &attrs);
|
||||||
min_nr_regions, max_nr_regions);
|
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
|
|
|
@ -275,12 +275,18 @@ static struct damos *damon_reclaim_new_scheme(void)
|
||||||
|
|
||||||
static int damon_reclaim_apply_parameters(void)
|
static int damon_reclaim_apply_parameters(void)
|
||||||
{
|
{
|
||||||
|
struct damon_attrs attrs = {
|
||||||
|
.sample_interval = sample_interval,
|
||||||
|
.aggr_interval = aggr_interval,
|
||||||
|
.ops_update_interval = 0,
|
||||||
|
.min_nr_regions = min_nr_regions,
|
||||||
|
.max_nr_regions = max_nr_regions,
|
||||||
|
};
|
||||||
struct damos *scheme;
|
struct damos *scheme;
|
||||||
struct damon_addr_range addr_range;
|
struct damon_addr_range addr_range;
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
|
||||||
err = damon_set_attrs(ctx, sample_interval, aggr_interval, 0,
|
err = damon_set_attrs(ctx, &attrs);
|
||||||
min_nr_regions, max_nr_regions);
|
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
|
|
|
@ -2130,10 +2130,14 @@ static int damon_sysfs_set_attrs(struct damon_ctx *ctx,
|
||||||
struct damon_sysfs_intervals *sys_intervals = sys_attrs->intervals;
|
struct damon_sysfs_intervals *sys_intervals = sys_attrs->intervals;
|
||||||
struct damon_sysfs_ul_range *sys_nr_regions =
|
struct damon_sysfs_ul_range *sys_nr_regions =
|
||||||
sys_attrs->nr_regions_range;
|
sys_attrs->nr_regions_range;
|
||||||
|
struct damon_attrs attrs = {
|
||||||
return damon_set_attrs(ctx, sys_intervals->sample_us,
|
.sample_interval = sys_intervals->sample_us,
|
||||||
sys_intervals->aggr_us, sys_intervals->update_us,
|
.aggr_interval = sys_intervals->aggr_us,
|
||||||
sys_nr_regions->min, sys_nr_regions->max);
|
.ops_update_interval = sys_intervals->update_us,
|
||||||
|
.min_nr_regions = sys_nr_regions->min,
|
||||||
|
.max_nr_regions = sys_nr_regions->max,
|
||||||
|
};
|
||||||
|
return damon_set_attrs(ctx, &attrs);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void damon_sysfs_destroy_targets(struct damon_ctx *ctx)
|
static void damon_sysfs_destroy_targets(struct damon_ctx *ctx)
|
||||||
|
|
Loading…
Reference in New Issue