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

Function pmap_sremove

freebsd/arm64/arm64/pmap.c:3757–3780  ·  view source on GitHub ↗

* Remove a single SMMU entry. */

Source from the content-addressed store, hash-verified

3755 * Remove a single SMMU entry.
3756 */
3757int
3758pmap_sremove(pmap_t pmap, vm_offset_t va)
3759{
3760 pt_entry_t *pte;
3761 int lvl;
3762 int rc;
3763
3764 PMAP_LOCK(pmap);
3765
3766 pte = pmap_pte(pmap, va, &lvl);
3767 KASSERT(lvl == 3,
3768 ("Invalid SMMU pagetable level: %d != 3", lvl));
3769
3770 if (pte != NULL) {
3771 pmap_resident_count_dec(pmap, 1);
3772 pmap_clear(pte);
3773 rc = KERN_SUCCESS;
3774 } else
3775 rc = KERN_FAILURE;
3776
3777 PMAP_UNLOCK(pmap);
3778
3779 return (rc);
3780}
3781
3782/*
3783 * Remove all the allocated L1, L2 pages from SMMU pmap.

Callers 1

smmu_unmapFunction · 0.85

Calls 2

pmap_pteFunction · 0.70
pmap_resident_count_decFunction · 0.70

Tested by

no test coverage detected