Parcourir la source

!450 【modify】Optimize macro dependencies of some functions
Merge pull request !450 from morphlings2014/rt-smart

bernard il y a 4 ans
Parent
commit
10e92ea0f1
2 fichiers modifiés avec 16 ajouts et 2 suppressions
  1. 4 0
      components/lwp/lwp.c
  2. 12 2
      components/lwp/lwp_syscall.c

+ 4 - 0
components/lwp/lwp.c

@@ -1267,7 +1267,11 @@ pid_t lwp_execve(char *filename, int argc, char **argv, char **envp)
     return -RT_ERROR;
 }
 
+#ifdef RT_USING_MUSL
 extern char **__environ;
+#else
+char __environ = 0;
+#endif
 
 #ifdef RT_USING_GDBSERVER
 pid_t exec(char *filename, int debug, int argc, char **argv)

+ 12 - 2
components/lwp/lwp_syscall.c

@@ -3917,8 +3917,6 @@ int sys_setsid(void)
     return (ret < 0 ? GET_ERRNO() : ret);
 }
 
-int sys_cacheflush(void *addr, int len, int cache);
-
 int sys_getrandom(void *buf, size_t buflen, unsigned int flags)
 {
     int ret = -1;
@@ -3947,6 +3945,7 @@ int sys_getrandom(void *buf, size_t buflen, unsigned int flags)
         return -EFAULT;
     }
 
+#ifdef RT_USING_USERSPACE
     kmem = kmem_get(buflen);
     if (!kmem)
     {
@@ -3969,7 +3968,18 @@ int sys_getrandom(void *buf, size_t buflen, unsigned int flags)
         ret = lwp_put_to_user(buf, kmem, count);
     }
     kmem_put(kmem);
+#else
+    while (count < buflen)
+    {
+        ret = rt_device_read(rd_dev, count, kmem + count, buflen - count);
+        if (ret <= 0)
+            break;
+        count += ret;
+    }
+    rt_device_close(rd_dev);
 
+    ret = count;
+#endif
     return ret;
 }