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

Function vm_map_entry_unlink

freebsd/vm/vm_map.c:1480–1520  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1478};
1479
1480static void
1481vm_map_entry_unlink(vm_map_t map, vm_map_entry_t entry,
1482 enum unlink_merge_type op)
1483{
1484 vm_map_entry_t header, llist, rlist, root;
1485 vm_size_t max_free_left, max_free_right;
1486
1487 VM_MAP_ASSERT_LOCKED(map);
1488 header = &map->header;
1489 root = vm_map_splay_split(map, entry->start, 0, &llist, &rlist);
1490 KASSERT(root != NULL,
1491 ("vm_map_entry_unlink: unlink object not mapped"));
1492
1493 vm_map_splay_findprev(root, &llist);
1494 vm_map_splay_findnext(root, &rlist);
1495 if (op == UNLINK_MERGE_NEXT) {
1496 rlist->start = root->start;
1497 rlist->offset = root->offset;
1498 }
1499 if (llist != header) {
1500 root = llist;
1501 llist = root->right;
1502 max_free_left = vm_map_splay_merge_left(header, root, llist);
1503 max_free_right = vm_map_splay_merge_succ(header, root, rlist);
1504 } else if (rlist != header) {
1505 root = rlist;
1506 rlist = root->left;
1507 max_free_left = vm_map_splay_merge_pred(header, root, llist);
1508 max_free_right = vm_map_splay_merge_right(header, root, rlist);
1509 } else {
1510 header->left = header->right = header;
1511 root = NULL;
1512 }
1513 if (root != NULL)
1514 root->max_free = vm_size_max(max_free_left, max_free_right);
1515 map->root = root;
1516 VM_MAP_ASSERT_CONSISTENT(map);
1517 map->nentries--;
1518 CTR3(KTR_VM, "vm_map_entry_unlink: map %p, nentries %d, entry %p", map,
1519 map->nentries, entry);
1520}
1521
1522/*
1523 * vm_map_entry_resize:

Callers 2

vm_map_try_merge_entriesFunction · 0.85
vm_map_entry_deleteFunction · 0.85

Calls 8

vm_map_splay_splitFunction · 0.85
vm_map_splay_findprevFunction · 0.85
vm_map_splay_findnextFunction · 0.85
vm_map_splay_merge_leftFunction · 0.85
vm_map_splay_merge_succFunction · 0.85
vm_map_splay_merge_predFunction · 0.85
vm_map_splay_merge_rightFunction · 0.85
vm_size_maxFunction · 0.85

Tested by

no test coverage detected