]> git.sur5r.net Git - freertos/blob - Demo/MCF5235_GCC/system/newlib.c
Update to V4.3.0 as described in http://www.FreeRTOS.org/History.txt
[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     See http://www.FreeRTOS.org for documentation, latest information, license\r
28     and contact details.  Please ensure to read the configuration and relevant\r
29     port sections of the online documentation.\r
30 \r
31         Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along\r
32         with commercial development and support options.\r
33     ***************************************************************************\r
34 */\r
35 \r
36 /* ------------------------ System includes ------------------------------- */\r
37 #include <sys/types.h>\r
38 #include <sys/stat.h>\r
39 #include <unistd.h>\r
40 #include <errno.h>\r
41 \r
42 /* ------------------------ FreeRTOS includes ----------------------------- */\r
43 #include <FreeRTOS.h>\r
44 #include <serial.h>\r
45 \r
46 /* ------------------------ Prototypes ------------------------------------ */\r
47 void vSerialPutStringNOISR( xComPortHandle pxPort,\r
48                             const signed portCHAR * const pcString,\r
49                             unsigned portSHORT usStringLength );\r
50 \r
51 /* ------------------------ Start implementation -------------------------- */\r
52 void\r
53 _exit( int status )\r
54 {\r
55     asm volatile    ( "halt" );\r
56 \r
57     for( ;; );\r
58 }\r
59 \r
60 pid_t\r
61 getpid( void )\r
62 {\r
63     return 0;\r
64 }\r
65 \r
66 int\r
67 kill( pid_t pid, int sig )\r
68 {\r
69     _exit( 0 );\r
70 }\r
71 \r
72 int\r
73 close( int fd )\r
74 {\r
75     return 0;\r
76 }\r
77 \r
78 int\r
79 fstat( int fd, struct stat *buf )\r
80 {\r
81     buf->st_mode = S_IFCHR;\r
82     buf->st_blksize = 0;\r
83     return 0;\r
84 }\r
85 \r
86 ssize_t\r
87 write( int fd, const void *buf, size_t nbytes )\r
88 {\r
89     ssize_t res = nbytes;\r
90     extern xComPortHandle xSTDComPort;\r
91     switch ( fd )\r
92     {\r
93         case STDERR_FILENO:\r
94             vSerialPutStringNOISR( xSTDComPort,\r
95                                    ( const signed portCHAR * const )buf,\r
96                                    ( unsigned portSHORT )nbytes );\r
97             break;\r
98         case STDOUT_FILENO:\r
99             vSerialPutString( xSTDComPort,\r
100                               ( const signed portCHAR * const)buf,\r
101                               ( unsigned portSHORT )nbytes );\r
102             break;\r
103         default:\r
104             errno = EIO;\r
105             res = -1;\r
106             break;\r
107     }\r
108     return res;\r
109 }\r
110 \r
111 int\r
112 read( int fd, void *buf, size_t nbytes )\r
113 {\r
114     switch ( fd )\r
115     {\r
116         default:\r
117             errno = EIO;\r
118             return -1;\r
119     }\r
120 }\r
121 \r
122 int\r
123 isatty( int fd )\r
124 {\r
125     return 0;\r
126 }\r
127 \r
128 off_t\r
129 lseek( int fd, off_t offset, int whence )\r
130 {\r
131     errno = EIO;\r
132     return ( off_t ) - 1;\r
133 }\r
134 \r
135 extern char     _end[];\r
136 char           *heap_ptr;\r
137 \r
138 void           *\r
139 sbrk( ptrdiff_t nbytes )\r
140 {\r
141     char           *base;\r
142 \r
143     if( !heap_ptr )\r
144         heap_ptr = ( char * )&_end;\r
145     base = heap_ptr;\r
146     heap_ptr += nbytes;\r
147 \r
148     return base;\r
149 }\r