1 /*
2  * Copyright (C) 2015-2017 Alibaba Group Holding Limited
3  */
4 
5 #ifdef __ICCARM__
6 #include <stdarg.h>
7 #include <stdio.h>
8 #include <string.h>
9 #include "aos/kernel.h"
10 
11 #include "sys/types.h"
12 #include "sys/time.h"
13 #include "aos/hal/uart.h"
14 #include "umm.h"
15 
16 int errno;
17 
18 extern long long  aos_now_ms(void);
19 
malloc(unsigned int size)20 __ATTRIBUTES void *malloc(unsigned int size)
21 {
22     return umm_alloc(size);
23 }
24 
realloc(void * old,unsigned int newlen)25 __ATTRIBUTES void *realloc(void *old, unsigned int newlen)
26 {
27     return umm_realloc(old, newlen);
28 }
29 
calloc(size_t len,size_t elsize)30 __ATTRIBUTES void *calloc(size_t len, size_t elsize)
31 {
32     void *mem;
33 
34     mem = umm_alloc(elsize * len);
35 
36     if (mem) {
37         memset(mem, 0, elsize * len);
38     }
39 
40     return mem;
41 }
42 
free(void * mem)43 __ATTRIBUTES void free(void *mem)
44 {
45     umm_free(mem);
46 }
47 
time(time_t * tod)48 __ATTRIBUTES time_t time(time_t *tod)
49 {
50     uint64_t t = aos_now_ms();
51     return (time_t)(t / 1000);
52 }
53 
__errno(void)54 int *__errno _PARAMS ((void))
55 {
56     return 0;
57 }
58 
__assert_func(const char * a,int b,const char * c,const char * d)59 void __assert_func(const char *a, int b, const char *c, const char *d)
60 {
61     while (1);
62 }
63 
64 /*TO DO*/
65 #pragma weak __write
__write(int handle,const unsigned char * buffer,size_t size)66 size_t __write(int handle, const unsigned char *buffer, size_t size)
67 {
68     uart_dev_t uart_stdio;
69     int i;
70     memset(&uart_stdio, 0, sizeof(uart_stdio));
71     uart_stdio.port = HAL_UART_STDIO_PORT;
72 
73     if (buffer == 0) {
74         /*
75          * This means that we should flush internal buffers.  Since we don't we just return.
76          * (Remember, "handle" == -1 means that all handles should be flushed.)
77          */
78         return 0;
79     }
80 
81     /* This function only writes to "standard out" and "standard err" for all other file handles it returns failure. */
82     if ((handle != 1) && (handle != 2)) {
83         return ((size_t) - 1);
84     }
85 
86     /* Send data. */
87     for (i = 0; i < size; i++) {
88         if (buffer[i] == '\n') {
89             hal_uart_send(&uart_stdio, (void *)"\r", 1, AOS_WAIT_FOREVER);
90         }
91 
92         hal_uart_send(&uart_stdio, &buffer[i], 1, AOS_WAIT_FOREVER);
93     }
94 
95     return size;
96 }
97 
bzero()98 void bzero()
99 {
100 
101 }
102 
__lseek()103 void __lseek()
104 {
105 
106 }
107 
__close()108 void __close()
109 {
110 
111 }
112 
remove(char const * p)113 int remove(char const *p)
114 {
115     return 0;
116 }
117 
gettimeofday(struct timeval * tp,void * ignore)118 int gettimeofday(struct timeval *tp, void *ignore)
119 {
120     return 0;
121 }
122 
getopt()123 void getopt()
124 {
125 
126 }
127 
optarg()128 void optarg()
129 {
130 
131 }
132 
133 #endif
134 
135