aboutsummaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorKimplul <kimi.h.kuparinen@gmail.com>2023-10-09 16:13:47 +0300
committerKimplul <kimi.h.kuparinen@gmail.com>2023-10-09 16:15:06 +0300
commit363d0ec55f1d7e0d44f14cb1d63fdca4bc72efde (patch)
tree122617be8859396dfd067e0da2cca4d8f670c277 /arch
parent9c9d589ea310f1290e4d6d2019fc8b51d9a86e42 (diff)
downloadkmi-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.h4
-rw-r--r--arch/riscv64/kernel/vmem.c22
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;
}
/**