diff options
| author | Kimplul <kimi.h.kuparinen@gmail.com> | 2023-10-09 16:13:47 +0300 |
|---|---|---|
| committer | Kimplul <kimi.h.kuparinen@gmail.com> | 2023-10-09 16:15:06 +0300 |
| commit | 363d0ec55f1d7e0d44f14cb1d63fdca4bc72efde (patch) | |
| tree | 122617be8859396dfd067e0da2cca4d8f670c277 /arch | |
| parent | 9c9d589ea310f1290e4d6d2019fc8b51d9a86e42 (diff) | |
| download | kmi-363d0ec55f1d7e0d44f14cb1d63fdca4bc72efde.tar.gz kmi-363d0ec55f1d7e0d44f14cb1d63fdca4bc72efde.zip | |
experimenting with removing lists threads per proc
+ Gives a very slight improvement to RPC speeds, but mostly cleans up
code a little bit.
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/riscv64/include/tcb.h | 4 | ||||
| -rw-r--r-- | arch/riscv64/kernel/vmem.c | 22 |
2 files changed, 8 insertions, 18 deletions
diff --git a/arch/riscv64/include/tcb.h b/arch/riscv64/include/tcb.h index a804175..f0cce37 100644 --- a/arch/riscv64/include/tcb.h +++ b/arch/riscv64/include/tcb.h @@ -16,7 +16,11 @@ struct arch_tcbd { /** Extra scratch register. */ long scratch; + /** RPC stack page table leaf node. */ struct vmem *rpc_leaf; + + /** Index into \p rpc_leaf with the lowest accessed page so far in a + * certain context. */ int rpc_idx; }; diff --git a/arch/riscv64/kernel/vmem.c b/arch/riscv64/kernel/vmem.c index 7d1d3cc..37b9040 100644 --- a/arch/riscv64/kernel/vmem.c +++ b/arch/riscv64/kernel/vmem.c @@ -177,11 +177,7 @@ stat_t set_vpage_flags(struct vmem *branch, vm_t vaddr, vmflags_t flags) pm_t *pte = __find_vmem(branch, vaddr, &order); if (pte) { set_bits(*pte, vp_flags(flags)); - - if (order == __mm_max_order) - return INFO_SEFF; - else - return OK; + return OK; } return ERR_NF; @@ -193,11 +189,7 @@ stat_t clear_vpage_flags(struct vmem *branch, vm_t vaddr, vmflags_t flags) pm_t *pte = __find_vmem(branch, vaddr, &order); if (pte) { clear_bits(*pte, vp_flags(flags)); - - if (order == __mm_max_order) - return INFO_SEFF; - else - return OK; + return OK; } return ERR_NF; @@ -211,13 +203,7 @@ stat_t mod_vpage(struct vmem *branch, vm_t vaddr, pm_t paddr, vmflags_t flags) pm_t *pte = __find_vmem(branch, vaddr, &order); if (pte) { *pte = to_pte((pm_t)__pa(paddr), vp_flags(flags)); - /* if we're modifying a top level mapping, we will have to - * update the same one for all the other threads in this process - * */ - if (order == __mm_max_order) - return INFO_SEFF; - else - return OK; + return OK; } return ERR_NF; @@ -323,7 +309,7 @@ stat_t map_vpage(struct vmem *branch, pm_t paddr, vm_t vaddr, vmflags_t flags, (struct vmem *)to_pte((pm_t)__pa(paddr), vp_flags(flags)); __add_graves(root, vm_to_index(vaddr, __mm_max_order)); - return top == __mm_max_order ? INFO_SEFF : OK; + return OK; } /** |
