mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
mm/damon: remove duplicate get_monitoring_region() definitions
In lru_sort.c and reclaim.c, they are all defining get_monitoring_region() function, there is no need to define it separately. As 'get_monitoring_region()' is not a 'static' function anymore, we try to use a prefix to distinguish with other functions, so there rename it to 'damon_find_biggest_system_ram'. Link: https://lkml.kernel.org/r/20220909213606.136221-1-sj@kernel.org Signed-off-by: Xin Hao <xhao@linux.alibaba.com> Signed-off-by: SeongJae Park <sj@kernel.org> Suggested-by: SeongJae Park <sj@kernel.org> Reviewed-by: SeongJae Park <sj@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
6b1964e685
commit
0d83b2d89d
@ -549,6 +549,8 @@ static inline bool damon_target_has_pid(const struct damon_ctx *ctx)
|
||||
int damon_start(struct damon_ctx **ctxs, int nr_ctxs, bool exclusive);
|
||||
int damon_stop(struct damon_ctx **ctxs, int nr_ctxs);
|
||||
|
||||
bool damon_find_biggest_system_ram(unsigned long *start, unsigned long *end);
|
||||
|
||||
#endif /* CONFIG_DAMON */
|
||||
|
||||
#endif /* _DAMON_H */
|
||||
|
@ -1245,4 +1245,44 @@ static int kdamond_fn(void *data)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* struct damon_system_ram_region - System RAM resource address region of
|
||||
* [@start, @end).
|
||||
* @start: Start address of the region (inclusive).
|
||||
* @end: End address of the region (exclusive).
|
||||
*/
|
||||
struct damon_system_ram_region {
|
||||
unsigned long start;
|
||||
unsigned long end;
|
||||
};
|
||||
|
||||
static int walk_system_ram(struct resource *res, void *arg)
|
||||
{
|
||||
struct damon_system_ram_region *a = arg;
|
||||
|
||||
if (a->end - a->start < resource_size(res)) {
|
||||
a->start = res->start;
|
||||
a->end = res->end;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Find biggest 'System RAM' resource and store its start and end address in
|
||||
* @start and @end, respectively. If no System RAM is found, returns false.
|
||||
*/
|
||||
bool damon_find_biggest_system_ram(unsigned long *start, unsigned long *end)
|
||||
|
||||
{
|
||||
struct damon_system_ram_region arg = {};
|
||||
|
||||
walk_system_ram_res(0, ULONG_MAX, &arg, walk_system_ram);
|
||||
if (arg.end <= arg.start)
|
||||
return false;
|
||||
|
||||
*start = arg.start;
|
||||
*end = arg.end;
|
||||
return true;
|
||||
}
|
||||
|
||||
#include "core-test.h"
|
||||
|
@ -257,39 +257,6 @@ module_param(nr_cold_quota_exceeds, ulong, 0400);
|
||||
static struct damon_ctx *ctx;
|
||||
static struct damon_target *target;
|
||||
|
||||
struct damon_lru_sort_ram_walk_arg {
|
||||
unsigned long start;
|
||||
unsigned long end;
|
||||
};
|
||||
|
||||
static int walk_system_ram(struct resource *res, void *arg)
|
||||
{
|
||||
struct damon_lru_sort_ram_walk_arg *a = arg;
|
||||
|
||||
if (a->end - a->start < resource_size(res)) {
|
||||
a->start = res->start;
|
||||
a->end = res->end;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Find biggest 'System RAM' resource and store its start and end address in
|
||||
* @start and @end, respectively. If no System RAM is found, returns false.
|
||||
*/
|
||||
static bool get_monitoring_region(unsigned long *start, unsigned long *end)
|
||||
{
|
||||
struct damon_lru_sort_ram_walk_arg arg = {};
|
||||
|
||||
walk_system_ram_res(0, ULONG_MAX, &arg, walk_system_ram);
|
||||
if (arg.end <= arg.start)
|
||||
return false;
|
||||
|
||||
*start = arg.start;
|
||||
*end = arg.end;
|
||||
return true;
|
||||
}
|
||||
|
||||
/* Create a DAMON-based operation scheme for hot memory regions */
|
||||
static struct damos *damon_lru_sort_new_hot_scheme(unsigned int hot_thres)
|
||||
{
|
||||
@ -414,8 +381,8 @@ static int damon_lru_sort_apply_parameters(void)
|
||||
if (monitor_region_start > monitor_region_end)
|
||||
return -EINVAL;
|
||||
if (!monitor_region_start && !monitor_region_end &&
|
||||
!get_monitoring_region(&monitor_region_start,
|
||||
&monitor_region_end))
|
||||
!damon_find_biggest_system_ram(&monitor_region_start,
|
||||
&monitor_region_end))
|
||||
return -EINVAL;
|
||||
addr_range.start = monitor_region_start;
|
||||
addr_range.end = monitor_region_end;
|
||||
|
@ -229,39 +229,6 @@ module_param(nr_quota_exceeds, ulong, 0400);
|
||||
static struct damon_ctx *ctx;
|
||||
static struct damon_target *target;
|
||||
|
||||
struct damon_reclaim_ram_walk_arg {
|
||||
unsigned long start;
|
||||
unsigned long end;
|
||||
};
|
||||
|
||||
static int walk_system_ram(struct resource *res, void *arg)
|
||||
{
|
||||
struct damon_reclaim_ram_walk_arg *a = arg;
|
||||
|
||||
if (a->end - a->start < resource_size(res)) {
|
||||
a->start = res->start;
|
||||
a->end = res->end;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Find biggest 'System RAM' resource and store its start and end address in
|
||||
* @start and @end, respectively. If no System RAM is found, returns false.
|
||||
*/
|
||||
static bool get_monitoring_region(unsigned long *start, unsigned long *end)
|
||||
{
|
||||
struct damon_reclaim_ram_walk_arg arg = {};
|
||||
|
||||
walk_system_ram_res(0, ULONG_MAX, &arg, walk_system_ram);
|
||||
if (arg.end <= arg.start)
|
||||
return false;
|
||||
|
||||
*start = arg.start;
|
||||
*end = arg.end;
|
||||
return true;
|
||||
}
|
||||
|
||||
static struct damos *damon_reclaim_new_scheme(void)
|
||||
{
|
||||
struct damos_access_pattern pattern = {
|
||||
@ -328,8 +295,8 @@ static int damon_reclaim_apply_parameters(void)
|
||||
if (monitor_region_start > monitor_region_end)
|
||||
return -EINVAL;
|
||||
if (!monitor_region_start && !monitor_region_end &&
|
||||
!get_monitoring_region(&monitor_region_start,
|
||||
&monitor_region_end))
|
||||
!damon_find_biggest_system_ram(&monitor_region_start,
|
||||
&monitor_region_end))
|
||||
return -EINVAL;
|
||||
addr_range.start = monitor_region_start;
|
||||
addr_range.end = monitor_region_end;
|
||||
|
Loading…
Reference in New Issue
Block a user