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