Browse Source

[lwP] add arch_kernel_get_mmu_info API

BernardXiong 3 years ago
parent
commit
128a943607

+ 8 - 3
components/lwp/arch/risc-v/rv64/lwp_arch.c

@@ -27,7 +27,6 @@
 
 extern size_t MMUTable[];
 
-//该函数用于支持用户栈扩展功能
 int arch_expand_user_stack(void *addr)
 {
     int ret = 0;
@@ -63,6 +62,13 @@ void *lwp_copy_return_code_to_user_stack()
     return RT_NULL;
 }
 
+rt_mmu_info* arch_kernel_get_mmu_info(void)
+{
+    extern rt_mmu_info *mmu_info;
+
+    return mmu_info;
+}
+
 uint32_t lwp_fix_sp(uint32_t cursp)
 {
     void lwp_thread_return();
@@ -92,7 +98,6 @@ void *lwp_get_user_sp()
     return RT_NULL;
 }
 
-//该函数负责初始化lwp的页表和堆
 int arch_user_space_init(struct rt_lwp *lwp)
 {
     size_t *mmu_table;
@@ -104,6 +109,7 @@ int arch_user_space_init(struct rt_lwp *lwp)
     }
 
     lwp->end_heap = USER_HEAP_VADDR;
+
     memcpy(mmu_table, MMUTable, PAGE_SIZE);
     rt_hw_cpu_dcache_ops(RT_HW_CACHE_FLUSH, mmu_table, 4 * PAGE_SIZE);
     rt_hw_mmu_map_init(&lwp->mmu_info, (void *)0x100000000UL, 0xFFFFFFFEFFFFFFFFUL, (rt_size_t *)mmu_table, 0);
@@ -111,7 +117,6 @@ int arch_user_space_init(struct rt_lwp *lwp)
     return 0;
 }
 
-//该函数负责返回内核页表指针
 void *arch_kernel_mmu_table_get(void)
 {
     return (void *)((char *)MMUTable);

+ 2 - 0
components/lwp/arch/risc-v/rv64/lwp_arch.h

@@ -36,6 +36,8 @@ void *arch_kernel_mmu_table_get(void);
 void arch_kuser_init(rt_mmu_info *mmu_info, void *vectors);
 int arch_expand_user_stack(void *addr);
 
+rt_mmu_info* arch_kernel_get_mmu_info(void);
+
 rt_inline unsigned long ffz(unsigned long x)
 {
     return __builtin_ffs(~x) - 1;