Lines Matching full:regions

58  * Functions for the initial monitoring target regions construction
62 * Size-evenly split a region into 'nr_pieces' small regions
116 * Find three regions separated by two biggest unmapped regions
119 * regions an array of three address ranges that results will be saved
121 * This function receives an address space and finds three regions in it which
122 * separated by the two biggest unmapped regions in the space. Please refer to
129 struct damon_addr_range regions[3]) in __damon_va_three_regions()
169 regions[0].start = ALIGN(start, DAMON_MIN_REGION); in __damon_va_three_regions()
170 regions[0].end = ALIGN(first_gap.start, DAMON_MIN_REGION); in __damon_va_three_regions()
171 regions[1].start = ALIGN(first_gap.end, DAMON_MIN_REGION); in __damon_va_three_regions()
172 regions[1].end = ALIGN(second_gap.start, DAMON_MIN_REGION); in __damon_va_three_regions()
173 regions[2].start = ALIGN(second_gap.end, DAMON_MIN_REGION); in __damon_va_three_regions()
174 regions[2].end = ALIGN(last_vma->vm_end, DAMON_MIN_REGION); in __damon_va_three_regions()
180 * Get the three regions in the given target (task)
185 struct damon_addr_range regions[3]) in damon_va_three_regions()
195 rc = __damon_va_three_regions(mm->mmap, regions); in damon_va_three_regions()
203 * Initialize the monitoring target regions for the given target (task)
209 * regions is wasteful. That said, because we can deal with small noises,
212 * high. The adaptive regions adjustment mechanism will further help to deal
219 * For the reason, we convert the complex mappings to three distinct regions
221 * between the three regions are the two biggest unmapped areas in the given
224 * Then, it constructs the three regions as below:
232 * region and the stack will be two biggest unmapped regions. Because these
234 * two biggest unmapped regions will be sufficient to make a trade-off.
239 * (other mmap()-ed regions and small unmapped regions)
248 struct damon_addr_range regions[3]; in __damon_va_init_regions() local
252 if (damon_va_three_regions(t, regions)) { in __damon_va_init_regions()
253 pr_err("Failed to get three regions of target %lu\n", t->id); in __damon_va_init_regions()
258 sz += regions[i].end - regions[i].start; in __damon_va_init_regions()
264 /* Set the initial three regions of the target */ in __damon_va_init_regions()
266 r = damon_new_region(regions[i].start, regions[i].end); in __damon_va_init_regions()
273 nr_pieces = (regions[i].end - regions[i].start) / sz; in __damon_va_init_regions()
284 /* the user may set the target regions as they want */ in damon_va_init()
291 * Functions for the dynamic monitoring target regions update
305 * Update damon regions for the three big regions of the given target
308 * bregions the three big regions of the target
316 /* Remove regions which are not in the three big regions now */ in damon_va_apply_three_regions()
326 /* Adjust intersecting regions to fit with the three big regions */ in damon_va_apply_three_regions()
333 /* Get the first and last regions which intersects with br */ in damon_va_apply_three_regions()
361 * Update regions for current memory mappings
490 * Functions for the access checking of the regions