source: ecs_cellMon/firmware/Core/Src/syscalls.c

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

fw hinzugfügt-->zed

File size: 4.6 KB
Line 
1/**
2*****************************************************************************
3**
4**  File        : syscalls.c
5**
6**  Author              : Auto-generated by System workbench for STM32
7**
8**  Abstract    : System Workbench 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**  Target      : STMicroelectronics STM32
15**
16**  Distribution: The file is distributed “as is,” without any warranty
17**                of any kind.
18**
19*****************************************************************************
20** @attention
21**
22** <h2><center>&copy; COPYRIGHT(c) 2019 STMicroelectronics</center></h2>
23**
24** Redistribution and use in source and binary forms, with or without modification,
25** are permitted provided that the following conditions are met:
26**   1. Redistributions of source code must retain the above copyright notice,
27**      this list of conditions and the following disclaimer.
28**   2. Redistributions in binary form must reproduce the above copyright notice,
29**      this list of conditions and the following disclaimer in the documentation
30**      and/or other materials provided with the distribution.
31**   3. Neither the name of STMicroelectronics nor the names of its contributors
32**      may be used to endorse or promote products derived from this software
33**      without specific prior written permission.
34**
35** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
36** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
37** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
38** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
39** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
40** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
41** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
42** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
43** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
44** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
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
62extern int errno;
63extern int __io_putchar(int ch) __attribute__((weak));
64extern int __io_getchar(void) __attribute__((weak));
65
66register char * stack_ptr asm("sp");
67
68char *__env[1] = { 0 };
69char **environ = __env;
70
71
72/* Functions */
73void initialise_monitor_handles()
74{
75}
76
77int _getpid(void)
78{
79        return 1;
80}
81
82int _kill(int pid, int sig)
83{
84        errno = EINVAL;
85        return -1;
86}
87
88void _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
103return 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
117caddr_t _sbrk(int incr)
118{
119        extern char end asm("end");
120        static char *heap_end;
121        char *prev_heap_end;
122
123        if (heap_end == 0)
124                heap_end = &end;
125
126        prev_heap_end = heap_end;
127        if (heap_end + incr > stack_ptr)
128        {
129//              write(1, "Heap and stack collision\n", 25);
130//              abort();
131                errno = ENOMEM;
132                return (caddr_t) -1;
133        }
134
135        heap_end += incr;
136
137        return (caddr_t) prev_heap_end;
138}
139
140int _close(int file)
141{
142        return -1;
143}
144
145
146int _fstat(int file, struct stat *st)
147{
148        st->st_mode = S_IFCHR;
149        return 0;
150}
151
152int _isatty(int file)
153{
154        return 1;
155}
156
157int _lseek(int file, int ptr, int dir)
158{
159        return 0;
160}
161
162int _open(char *path, int flags, ...)
163{
164        /* Pretend like we always fail */
165        return -1;
166}
167
168int _wait(int *status)
169{
170        errno = ECHILD;
171        return -1;
172}
173
174int _unlink(char *name)
175{
176        errno = ENOENT;
177        return -1;
178}
179
180int _times(struct tms *buf)
181{
182        return -1;
183}
184
185int _stat(char *file, struct stat *st)
186{
187        st->st_mode = S_IFCHR;
188        return 0;
189}
190
191int _link(char *old, char *new)
192{
193        errno = EMLINK;
194        return -1;
195}
196
197int _fork(void)
198{
199        errno = EAGAIN;
200        return -1;
201}
202
203int _execve(char *name, char **argv, char **env)
204{
205        errno = ENOMEM;
206        return -1;
207}
Note: See TracBrowser for help on using the repository browser.