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()
157 regions[0].start = ALIGN(start, DAMON_MIN_REGION); in __damon_va_three_regions()
158 regions[0].end = ALIGN(first_gap.start, DAMON_MIN_REGION); in __damon_va_three_regions()
159 regions[1].start = ALIGN(first_gap.end, DAMON_MIN_REGION); in __damon_va_three_regions()
160 regions[1].end = ALIGN(second_gap.start, DAMON_MIN_REGION); in __damon_va_three_regions()
161 regions[2].start = ALIGN(second_gap.end, DAMON_MIN_REGION); in __damon_va_three_regions()
162 regions[2].end = ALIGN(last_vma->vm_end, DAMON_MIN_REGION); in __damon_va_three_regions()
168 * Get the three regions in the given target (task)
173 struct damon_addr_range regions[3]) in damon_va_three_regions()
183 rc = __damon_va_three_regions(mm->mmap, regions); in damon_va_three_regions()
191 * Initialize the monitoring target regions for the given target (task)
197 * regions is wasteful. That said, because we can deal with small noises,
200 * high. The adaptive regions adjustment mechanism will further help to deal
207 * For the reason, we convert the complex mappings to three distinct regions
209 * between the three regions are the two biggest unmapped areas in the given
212 * Then, it constructs the three regions as below:
220 * region and the stack will be two biggest unmapped regions. Because these
222 * two biggest unmapped regions will be sufficient to make a trade-off.
227 * (other mmap()-ed regions and small unmapped regions)
237 struct damon_addr_range regions[3]; in __damon_va_init_regions() local
241 if (damon_va_three_regions(t, regions)) { in __damon_va_init_regions()
247 pr_debug("Failed to get three regions of %dth target\n", tidx); in __damon_va_init_regions()
252 sz += regions[i].end - regions[i].start; in __damon_va_init_regions()
258 /* Set the initial three regions of the target */ in __damon_va_init_regions()
260 r = damon_new_region(regions[i].start, regions[i].end); in __damon_va_init_regions()
267 nr_pieces = (regions[i].end - regions[i].start) / sz; in __damon_va_init_regions()
278 /* the user may set the target regions as they want */ in damon_va_init()
285 * Functions for the dynamic monitoring target regions update
300 * Update damon regions for the three big regions of the given target
303 * bregions the three big regions of the target
311 /* Remove regions which are not in the three big regions now */ in damon_va_apply_three_regions()
321 /* Adjust intersecting regions to fit with the three big regions */ in damon_va_apply_three_regions()
328 /* Get the first and last regions which intersects with br */ in damon_va_apply_three_regions()
356 * Update regions for current memory mappings
470 * Functions for the access checking of the regions