1
0
Эх сурвалжийг харах

[libc] Fix system issue when use msh and make code cleanup.

bernard 10 жил өмнө
parent
commit
4ee93b7552

+ 18 - 4
components/libc/armlibc/mem_std.c

@@ -1,7 +1,16 @@
 /*
 /*
- * File:    mem_std.c
- * Brief:   Replace memory management functions of arm standard c library
+ * File     : mem_std.c
+ * Brief    : implement standard memory routins.
  *
  *
+ * This file is part of Device File System in RT-Thread RTOS
+ * COPYRIGHT (C) 2014, RT-Thread Development Team
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rt-thread.org/license/LICENSE.
+ *
+ * Change Logs:
+ * 2014-08-03     bernard      Add file header.
  */
  */
 
 
 #include "rtthread.h"
 #include "rtthread.h"
@@ -9,16 +18,21 @@
 /* avoid the heap and heap-using library functions supplied by arm */
 /* avoid the heap and heap-using library functions supplied by arm */
 #pragma import(__use_no_heap)
 #pragma import(__use_no_heap)
 
 
-void * malloc(int n)
+void *malloc(int n)
 {
 {
     return rt_malloc(n);
     return rt_malloc(n);
 }
 }
 
 
-void * realloc(void *rmem, rt_size_t newsize)
+void *realloc(void *rmem, rt_size_t newsize)
 {
 {
     return rt_realloc(rmem, newsize);
     return rt_realloc(rmem, newsize);
 }
 }
 
 
+void *calloc(rt_size_t nelem, rt_size_t elsize)
+{
+	return rt_calloc(nelem, elsize);
+}
+
 void free(void *rmem)
 void free(void *rmem)
 {
 {
     rt_free(rmem);
     rt_free(rmem);

+ 11 - 11
components/libc/armlibc/stubs.c

@@ -13,6 +13,8 @@
  * Date           Author       Notes
  * Date           Author       Notes
  * 2012-11-23     Yihui        The first version
  * 2012-11-23     Yihui        The first version
  * 2013-11-24     aozima       fixed _sys_read()/_sys_write() issues.
  * 2013-11-24     aozima       fixed _sys_read()/_sys_write() issues.
+ * 2014-08-03     bernard      If using msh, use system() implementation 
+ *                             in msh.
  */
  */
 
 
 #include <string.h>
 #include <string.h>
@@ -194,9 +196,13 @@ char *_sys_command_string(char *cmd, int len)
     return cmd;
     return cmd;
 }
 }
 
 
+/* This function writes a character to the console. */
 void _ttywrch(int ch)
 void _ttywrch(int ch)
 {
 {
-   /* TODO */
+    char c;
+
+    c = (char)ch;
+    rt_kprintf(&c);
 }
 }
 
 
 void _sys_exit(int return_code)
 void _sys_exit(int return_code)
@@ -231,18 +237,12 @@ int remove(const char *filename)
 #endif
 #endif
 }
 }
 
 
-/* rename() is defined in dfs_posix.c instead */
-#if 0
-int rename(const char *old, const char *new)
-{
-    return -1;
-}
-#endif
-
+#if defined(RT_USING_FINSH) && defined(FINSH_USING_MSH) && defined(RT_USING_MODULE) && defined(RT_USING_DFS)
+/* use system implementation in the msh */
+#else
 int system(const char *string)
 int system(const char *string)
 {
 {
     RT_ASSERT(0);
     RT_ASSERT(0);
     for(;;);
     for(;;);
 }
 }
-
-
+#endif