source: trunk/fw_g473rct/SES/src/syscalls.c@ 20

Last change on this file since 20 was 20, checked in by f.jahn, 4 months ago

adc dma funktioniert und modbus funktioniert

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