MCPcopy Create free account
hub / github.com/F-Stack/f-stack / _vm_map_assert_consistent

Function _vm_map_assert_consistent

freebsd/vm/vm_map.c:5230–5292  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5228
5229#ifdef INVARIANTS
5230static void
5231_vm_map_assert_consistent(vm_map_t map, int check)
5232{
5233 vm_map_entry_t entry, prev;
5234 vm_map_entry_t cur, header, lbound, ubound;
5235 vm_size_t max_left, max_right;
5236
5237#ifdef DIAGNOSTIC
5238 ++map->nupdates;
5239#endif
5240 if (enable_vmmap_check != check)
5241 return;
5242
5243 header = prev = &map->header;
5244 VM_MAP_ENTRY_FOREACH(entry, map) {
5245 KASSERT(prev->end <= entry->start,
5246 ("map %p prev->end = %jx, start = %jx", map,
5247 (uintmax_t)prev->end, (uintmax_t)entry->start));
5248 KASSERT(entry->start < entry->end,
5249 ("map %p start = %jx, end = %jx", map,
5250 (uintmax_t)entry->start, (uintmax_t)entry->end));
5251 KASSERT(entry->left == header ||
5252 entry->left->start < entry->start,
5253 ("map %p left->start = %jx, start = %jx", map,
5254 (uintmax_t)entry->left->start, (uintmax_t)entry->start));
5255 KASSERT(entry->right == header ||
5256 entry->start < entry->right->start,
5257 ("map %p start = %jx, right->start = %jx", map,
5258 (uintmax_t)entry->start, (uintmax_t)entry->right->start));
5259 cur = map->root;
5260 lbound = ubound = header;
5261 for (;;) {
5262 if (entry->start < cur->start) {
5263 ubound = cur;
5264 cur = cur->left;
5265 KASSERT(cur != lbound,
5266 ("map %p cannot find %jx",
5267 map, (uintmax_t)entry->start));
5268 } else if (cur->end <= entry->start) {
5269 lbound = cur;
5270 cur = cur->right;
5271 KASSERT(cur != ubound,
5272 ("map %p cannot find %jx",
5273 map, (uintmax_t)entry->start));
5274 } else {
5275 KASSERT(cur == entry,
5276 ("map %p cannot find %jx",
5277 map, (uintmax_t)entry->start));
5278 break;
5279 }
5280 }
5281 max_left = vm_map_entry_max_free_left(entry, lbound);
5282 max_right = vm_map_entry_max_free_right(entry, ubound);
5283 KASSERT(entry->max_free == vm_size_max(max_left, max_right),
5284 ("map %p max = %jx, max_left = %jx, max_right = %jx", map,
5285 (uintmax_t)entry->max_free,
5286 (uintmax_t)max_left, (uintmax_t)max_right));
5287 prev = entry;

Callers

nothing calls this directly

Calls 3

vm_size_maxFunction · 0.85

Tested by

no test coverage detected