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