BernardXiong 4 роки тому
батько
коміт
7f2a806307
2 змінених файлів з 31 додано та 41 видалено
  1. 21 23
      components/lwp/ioremap.c
  2. 10 18
      components/lwp/lwp.c

+ 21 - 23
components/lwp/ioremap.c

@@ -7,17 +7,15 @@
  * Date           Author       Notes
  * 2021-05-06     Jesven       first version
  */
-#include <rtthread.h>
 #include <rthw.h>
+#include <rtthread.h>
+
+#include <ioremap.h>
 
 #ifdef RT_USING_USERSPACE
 #include <mmu.h>
 #include <lwp_mm_area.h>
-#endif
 
-#include <ioremap.h>
-
-#ifdef RT_USING_USERSPACE
 static struct lwp_avl_struct *k_map_area;
 extern rt_mmu_info mmu_info;
 
@@ -84,8 +82,24 @@ void *rt_ioremap_cached(void *paddr, size_t size)
     return _ioremap_type(paddr, size, MM_AREA_TYPE_PHY_CACHED);
 }
 
-#else
+void rt_iounmap(volatile void *vaddr)
+{
+    rt_base_t level;
+    struct lwp_avl_struct *ma_avl_node;
+
+    level = rt_hw_interrupt_disable();
+    ma_avl_node = lwp_map_find(k_map_area, (size_t)vaddr);
+    if (ma_avl_node)
+    {
+        struct rt_mm_area_struct *ma = (struct rt_mm_area_struct *)ma_avl_node->data;
+
+        _iounmap_range((void *)ma->addr, ma->size);
+        lwp_map_area_remove(&k_map_area, (size_t)vaddr);
+    }
+    rt_hw_interrupt_enable(level);
+}
 
+#else
 void *rt_ioremap(void *paddr, size_t size)
 {
     return paddr;
@@ -101,23 +115,7 @@ void *rt_ioremap_cached(void *paddr, size_t size)
     return paddr;
 }
 
-#endif
-
 void rt_iounmap(volatile void *vaddr)
 {
-#ifdef RT_USING_USERSPACE
-    rt_base_t level;
-    struct lwp_avl_struct *ma_avl_node;
-
-    level = rt_hw_interrupt_disable();
-    ma_avl_node = lwp_map_find(k_map_area, (size_t)vaddr);
-    if (ma_avl_node)
-    {
-        struct rt_mm_area_struct *ma = (struct rt_mm_area_struct *)ma_avl_node->data;
-
-        _iounmap_range((void *)ma->addr, ma->size);
-        lwp_map_area_remove(&k_map_area, (size_t)vaddr);
-    }
-    rt_hw_interrupt_enable(level);
-#endif
 }
+#endif

+ 10 - 18
components/lwp/lwp.c

@@ -36,7 +36,7 @@
 
 #include <lwp_mm_area.h>
 #include <lwp_user_mm.h>
-#endif
+#endif /* end of RT_USING_USERSPACE */
 
 static const char elf_magic[] = {0x7f, 'E', 'L', 'F'};
 #ifdef DFS_USING_WORKDIR
@@ -49,33 +49,31 @@ int load_ldso(struct rt_lwp *lwp, char *exec_name, char *const argv[], char *con
 
 void lwp_setcwd(char *buf)
 {
+    struct rt_lwp *lwp = RT_NULL;
+
     if(strlen(buf) >= DFS_PATH_MAX)
     {
         rt_kprintf("buf too long!\n");
         return ;
     }
 
-#ifdef RT_USING_LWP
-    struct rt_lwp *lwp;
-
     lwp = (struct rt_lwp *)rt_thread_self()->lwp;
     if (lwp)
+    {
         rt_strncpy(lwp->working_directory, buf, DFS_PATH_MAX);
+    }
     else
+    {
         rt_strncpy(working_directory, buf, DFS_PATH_MAX);
-#else
-#ifdef DFS_USING_WORKDIR
-    rt_strncpy(working_directory, buf, DFS_PATH_MAX);
-#endif
-#endif
+    }
+
     return ;
 }
 
 char *lwp_getcwd(void)
 {
     char *dir_buf = RT_NULL;
-#ifdef RT_USING_LWP
-    struct rt_lwp *lwp;
+    struct rt_lwp *lwp = RT_NULL;
 
     lwp = (struct rt_lwp *)rt_thread_self()->lwp;
     if (lwp)
@@ -91,11 +89,7 @@ char *lwp_getcwd(void)
     }
     else
         dir_buf = &working_directory[0];
-#else
-#ifdef DFS_USING_WORKDIR
-    dir_buf = &working_directory[0];
-#endif
-#endif
+
     return dir_buf;
 }
 
@@ -954,8 +948,6 @@ _exit:
 }
 #endif /* ARCH_MM_MMU */
 
-int lwp_load(const char *filename, struct rt_lwp *lwp, uint8_t *load_addr, size_t addr_size, struct process_aux *aux);
-
 RT_WEAK int lwp_load(const char *filename, struct rt_lwp *lwp, uint8_t *load_addr, size_t addr_size, struct process_aux *aux)
 {
     uint8_t *ptr;