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

Function pmap_pkru_assign

freebsd/amd64/amd64/pmap.c:10882–10904  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

10880}
10881
10882static int
10883pmap_pkru_assign(pmap_t pmap, vm_offset_t sva, vm_offset_t eva, u_int keyidx,
10884 int flags)
10885{
10886 struct pmap_pkru_range *ppr;
10887 int error;
10888
10889 PMAP_LOCK_ASSERT(pmap, MA_OWNED);
10890 MPASS(pmap->pm_type == PT_X86);
10891 MPASS((cpu_stdext_feature2 & CPUID_STDEXT2_PKU) != 0);
10892 if ((flags & AMD64_PKRU_EXCL) != 0 &&
10893 !rangeset_check_empty(&pmap->pm_pkru, sva, eva))
10894 return (EBUSY);
10895 ppr = uma_zalloc(pmap_pkru_ranges_zone, M_NOWAIT);
10896 if (ppr == NULL)
10897 return (ENOMEM);
10898 ppr->pkru_keyidx = keyidx;
10899 ppr->pkru_flags = flags & AMD64_PKRU_PERSIST;
10900 error = rangeset_insert(&pmap->pm_pkru, sva, eva, ppr);
10901 if (error != 0)
10902 uma_zfree(pmap_pkru_ranges_zone, ppr);
10903 return (error);
10904}
10905
10906static int
10907pmap_pkru_deassign(pmap_t pmap, vm_offset_t sva, vm_offset_t eva)

Callers 1

pmap_pkru_setFunction · 0.85

Calls 4

rangeset_check_emptyFunction · 0.85
rangeset_insertFunction · 0.85
uma_zallocFunction · 0.50
uma_zfreeFunction · 0.50

Tested by

no test coverage detected