]> git.sur5r.net Git - freertos/blob - Demo/MCF5235_GCC/system/newlib.c
Update to V4.7.1
[freertos] / Demo / MCF5235_GCC / system / newlib.c
1 /*\r
2     FreeRTOS MCF5235 port - Copyright (C) 2006 Christian Walter.\r
3 \r
4     This file is part of the FreeRTOS distribution.\r
5 \r
6     FreeRTOS is free software; you can redistribute it and/or modify\r
7     it under the terms of the GNU General Public License as published by\r
8     the Free Software Foundation; either version 2 of the License, or\r
9     (at your option) any later version.\r
10 \r
11     FreeRTOS is distributed in the hope that it will be useful,\r
12     but WITHOUT ANY WARRANTY; without even the implied warranty of\r
13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
14     GNU General Public License for more details.\r
15 \r
16     You should have received a copy of the GNU General Public License\r
17     along with FreeRTOS; if not, write to the Free Software\r
18     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
19 \r
20     A special exception to the GPL can be applied should you wish to distribute\r
21     a combined work that includes FreeRTOS, without being obliged to provide\r
22     the source code for any proprietary components.  See the licensing section\r
23     of http://www.FreeRTOS.org for full details of how and when the exception\r
24     can be applied.\r
25 \r
26         ***************************************************************************\r
27 \r
28         Please ensure to read the configuration and relevant port sections of the \r
29         online documentation.\r
30 \r
31         +++ http://www.FreeRTOS.org +++\r
32         Documentation, latest information, license and contact details.  \r
33 \r
34         +++ http://www.SafeRTOS.com +++\r
35         A version that is certified for use in safety critical systems.\r
36 \r
37         +++ http://www.OpenRTOS.com +++\r
38         Commercial support, development, porting, licensing and training services.\r
39 \r
40         ***************************************************************************\r
41 */\r
42 \r
43 /* ------------------------ System includes ------------------------------- */\r
44 #include <sys/types.h>\r
45 #include <sys/stat.h>\r
46 #include <unistd.h>\r
47 #include <errno.h>\r
48 \r
49 /* ------------------------ FreeRTOS includes ----------------------------- */\r
50 #include <FreeRTOS.h>\r
51 #include <serial.h>\r
52 \r
53 /* ------------------------ Prototypes ------------------------------------ */\r
54 void vSerialPutStringNOISR( xComPortHandle pxPort,\r
55                             const signed portCHAR * const pcString,\r
56                             unsigned portSHORT usStringLength );\r
57 \r
58 /* ------------------------ Start implementation -------------------------- */\r
59 void\r
60 _exit( int status )\r
61 {\r
62     asm volatile    ( "halt" );\r
63 \r
64     for( ;; );\r
65 }\r
66 \r
67 pid_t\r
68 getpid( void )\r
69 {\r
70     return 0;\r
71 }\r
72 \r
73 int\r
74 kill( pid_t pid, int sig )\r
75 {\r
76     _exit( 0 );\r
77 }\r
78 \r
79 int\r
80 close( int fd )\r
81 {\r
82     return 0;\r
83 }\r
84 \r
85 int\r
86 fstat( int fd, struct stat *buf )\r
87 {\r
88     buf->st_mode = S_IFCHR;\r
89     buf->st_blksize = 0;\r
90     return 0;\r
91 }\r
92 \r
93 ssize_t\r
94 write( int fd, const void *buf, size_t nbytes )\r
95 {\r
96     ssize_t res = nbytes;\r
97     extern xComPortHandle xSTDComPort;\r
98     switch ( fd )\r
99     {\r
100         case STDERR_FILENO:\r
101             vSerialPutStringNOISR( xSTDComPort,\r
102                                    ( const signed portCHAR * const )buf,\r
103                                    ( unsigned portSHORT )nbytes );\r
104             break;\r
105         case STDOUT_FILENO:\r
106             vSerialPutString( xSTDComPort,\r
107                               ( const signed portCHAR * const)buf,\r
108                               ( unsigned portSHORT )nbytes );\r
109             break;\r
110         default:\r
111             errno = EIO;\r
112             res = -1;\r
113             break;\r
114     }\r
115     return res;\r
116 }\r
117 \r
118 int\r
119 read( int fd, void *buf, size_t nbytes )\r
120 {\r
121     switch ( fd )\r
122     {\r
123         default:\r
124             errno = EIO;\r
125             return -1;\r
126     }\r
127 }\r
128 \r
129 int\r
130 isatty( int fd )\r
131 {\r
132     return 0;\r
133 }\r
134 \r
135 off_t\r
136 lseek( int fd, off_t offset, int whence )\r
137 {\r
138     errno = EIO;\r
139     return ( off_t ) - 1;\r
140 }\r
141 \r
142 extern char     _end[];\r
143 char           *heap_ptr;\r
144 \r
145 void           *\r
146 sbrk( ptrdiff_t nbytes )\r
147 {\r
148     char           *base;\r
149 \r
150     if( !heap_ptr )\r
151         heap_ptr = ( char * )&_end;\r
152     base = heap_ptr;\r
153     heap_ptr += nbytes;\r
154 \r
155     return base;\r
156 }\r