]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_MPU_STM32L4_Discovery_GCC_IAR_Keil/Projects/GCC/Startup/syscalls.c
Rename STM32Cube to GCC for STM32L4 Discovery projects as GCC is
[freertos] / FreeRTOS / Demo / CORTEX_MPU_STM32L4_Discovery_GCC_IAR_Keil / Projects / GCC / Startup / syscalls.c
1 /**
2 *****************************************************************************
3 **
4 **  File        : syscalls.c
5 **
6 **  Author          : Auto-generated by STM32CubeIDE
7 **
8 **  Abstract    : STM32CubeIDE Minimal System calls file
9 **
10 **                        For more information about which c-functions
11 **                need which of these lowlevel functions
12 **                please consult the Newlib libc-manual
13 **
14 **  Environment : STM32CubeIDE MCU
15 **
16 **  Distribution: The file is distributed as is, without any warranty
17 **                of any kind.
18 **
19 *****************************************************************************
20 **
21 ** <h2><center>&copy; COPYRIGHT(c) 2018 STMicroelectronics</center></h2>
22 **
23 ** Redistribution and use in source and binary forms, with or without modification,
24 ** are permitted provided that the following conditions are met:
25 **   1. Redistributions of source code must retain the above copyright notice,
26 **      this list of conditions and the following disclaimer.
27 **   2. Redistributions in binary form must reproduce the above copyright notice,
28 **      this list of conditions and the following disclaimer in the documentation
29 **      and/or other materials provided with the distribution.
30 **   3. Neither the name of STMicroelectronics nor the names of its contributors
31 **      may be used to endorse or promote products derived from this software
32 **      without specific prior written permission.
33 **
34 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
35 ** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
36 ** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
37 ** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
38 ** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
39 ** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
40 ** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
41 ** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
42 ** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
43 ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
44 **
45 **
46 *****************************************************************************
47 */
48
49 /* Includes */
50 #include <sys/stat.h>
51 #include <stdlib.h>
52 #include <errno.h>
53 #include <stdio.h>
54 #include <signal.h>
55 #include <time.h>
56 #include <sys/time.h>
57 #include <sys/times.h>
58
59
60 /* Variables */
61 //#undef errno
62 extern int errno;
63 extern int __io_putchar(int ch) __attribute__((weak));
64 extern int __io_getchar(void) __attribute__((weak));
65
66 register char * stack_ptr asm("sp");
67
68 char *__env[1] = { 0 };
69 char **environ = __env;
70
71
72 /* Functions */
73 void initialise_monitor_handles()
74 {
75 }
76
77 int _getpid(void)
78 {
79         return 1;
80 }
81
82 int _kill(int pid, int sig)
83 {
84         errno = EINVAL;
85         return -1;
86 }
87
88 void _exit (int status)
89 {
90         _kill(status, -1);
91         while (1) {}            /* Make sure we hang here */
92 }
93
94 __attribute__((weak)) int _read(int file, char *ptr, int len)
95 {
96         int DataIdx;
97
98         for (DataIdx = 0; DataIdx < len; DataIdx++)
99         {
100                 *ptr++ = __io_getchar();
101         }
102
103 return len;
104 }
105
106 __attribute__((weak)) int _write(int file, char *ptr, int len)
107 {
108         int DataIdx;
109
110         for (DataIdx = 0; DataIdx < len; DataIdx++)
111         {
112                 __io_putchar(*ptr++);
113         }
114         return len;
115 }
116
117 int _close(int file)
118 {
119         return -1;
120 }
121
122
123 int _fstat(int file, struct stat *st)
124 {
125         st->st_mode = S_IFCHR;
126         return 0;
127 }
128
129 int _isatty(int file)
130 {
131         return 1;
132 }
133
134 int _lseek(int file, int ptr, int dir)
135 {
136         return 0;
137 }
138
139 int _open(char *path, int flags, ...)
140 {
141         /* Pretend like we always fail */
142         return -1;
143 }
144
145 int _wait(int *status)
146 {
147         errno = ECHILD;
148         return -1;
149 }
150
151 int _unlink(char *name)
152 {
153         errno = ENOENT;
154         return -1;
155 }
156
157 int _times(struct tms *buf)
158 {
159         return -1;
160 }
161
162 int _stat(char *file, struct stat *st)
163 {
164         st->st_mode = S_IFCHR;
165         return 0;
166 }
167
168 int _link(char *old, char *new)
169 {
170         errno = EMLINK;
171         return -1;
172 }
173
174 int _fork(void)
175 {
176         errno = EAGAIN;
177         return -1;
178 }
179
180 int _execve(char *name, char **argv, char **env)
181 {
182         errno = ENOMEM;
183         return -1;
184 }