* Mark the page m's PV list as participating in the current thread's * DI block. Any threads concurrently using m's PV list to remove or * restrict all mappings to m will wait for the current thread's DI * block to complete before proceeding. * * The function works by setting the DI generation number for m's PV * list to at least the DI generation number of the current thread. * This force
| 1168 | * current thread calls pmap_delayed_invl_finish(). |
| 1169 | */ |
| 1170 | static void |
| 1171 | pmap_delayed_invl_page(vm_page_t m) |
| 1172 | { |
| 1173 | u_long gen, *m_gen; |
| 1174 | |
| 1175 | rw_assert(VM_PAGE_TO_PV_LIST_LOCK(m), RA_WLOCKED); |
| 1176 | gen = curthread->td_md.md_invl_gen.gen; |
| 1177 | if (gen == 0) |
| 1178 | return; |
| 1179 | m_gen = pmap_delayed_invl_genp(m); |
| 1180 | if (*m_gen < gen) |
| 1181 | *m_gen = gen; |
| 1182 | } |
| 1183 | |
| 1184 | /* |
| 1185 | * Crashdump maps. |
no test coverage detected