Lines Matching full:regions
56 * Functions for the initial monitoring target regions construction
60 * Size-evenly split a region into 'nr_pieces' small regions
104 * Find three regions separated by two biggest unmapped regions
107 * regions an array of three address ranges that results will be saved
109 * This function receives an address space and finds three regions in it which
110 * separated by the two biggest unmapped regions in the space. Please refer to
117 struct damon_addr_range regions[3]) in __damon_va_three_regions()
158 regions[0].start = ALIGN(start, DAMON_MIN_REGION); in __damon_va_three_regions()
159 regions[0].end = ALIGN(first_gap.start, DAMON_MIN_REGION); in __damon_va_three_regions()
160 regions[1].start = ALIGN(first_gap.end, DAMON_MIN_REGION); in __damon_va_three_regions()
161 regions[1].end = ALIGN(second_gap.start, DAMON_MIN_REGION); in __damon_va_three_regions()
162 regions[2].start = ALIGN(second_gap.end, DAMON_MIN_REGION); in __damon_va_three_regions()
163 regions[2].end = ALIGN(prev->vm_end, DAMON_MIN_REGION); in __damon_va_three_regions()
169 * Get the three regions in the given target (task)
174 struct damon_addr_range regions[3]) in damon_va_three_regions()
184 rc = __damon_va_three_regions(mm, regions); in damon_va_three_regions()
192 * Initialize the monitoring target regions for the given target (task)
198 * regions is wasteful. That said, because we can deal with small noises,
201 * high. The adaptive regions adjustment mechanism will further help to deal
208 * For the reason, we convert the complex mappings to three distinct regions
210 * between the three regions are the two biggest unmapped areas in the given
213 * Then, it constructs the three regions as below:
221 * region and the stack will be two biggest unmapped regions. Because these
223 * two biggest unmapped regions will be sufficient to make a trade-off.
228 * (other mmap()-ed regions and small unmapped regions)
238 struct damon_addr_range regions[3]; in __damon_va_init_regions() local
242 if (damon_va_three_regions(t, regions)) { in __damon_va_init_regions()
248 pr_debug("Failed to get three regions of %dth target\n", tidx); in __damon_va_init_regions()
253 sz += regions[i].end - regions[i].start; in __damon_va_init_regions()
259 /* Set the initial three regions of the target */ in __damon_va_init_regions()
261 r = damon_new_region(regions[i].start, regions[i].end); in __damon_va_init_regions()
268 nr_pieces = (regions[i].end - regions[i].start) / sz; in __damon_va_init_regions()
279 /* the user may set the target regions as they want */ in damon_va_init()
286 * Update regions for current memory mappings
404 * Functions for the access checking of the regions
720 /* Don't set the monitoring target regions for the entire mapping */ in damon_va_initcall()