X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/e2994a5332194a132c60db35c55a006bdd1f6566..669e8fc63dd1aa7fe4c830b1d40371a1ab47fc4f:/lunaix-os/arch/generic/procvm.c?ds=sidebyside diff --git a/lunaix-os/arch/generic/procvm.c b/lunaix-os/arch/generic/procvm.c index 91c4845..ec288d3 100644 --- a/lunaix-os/arch/generic/procvm.c +++ b/lunaix-os/arch/generic/procvm.c @@ -30,7 +30,22 @@ procvm_link_kernel(ptr_t dest_mnt) } _default void -procvm_unlink_kernel() +procvm_unlink_kernel(ptr_t dest_mnt) { - // nothing to do here. + pte_t *ptep_smx, *src_smx; + unsigned int i; + + i = va_level_index(KERNEL_RESIDENT, L0T_SIZE); + ptep_smx = mkl1tep_va(VMS_SELF, dest_mnt); + src_smx = mkl0tep_va(VMS_SELF, 0); + + for (; i < LEVEL_SIZE; i++) + { + pte_t* ptep = &ptep_smx[i]; + if (lntep_implie_vmnts(ptep, L0T_SIZE)) { + continue; + } + + set_pte(ptep, null_pte); + } } \ No newline at end of file