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