Appiko
codebase
segger_rtt
SEGGER_RTT_Syscalls_GCC.c
1
/*********************************************************************
2
* SEGGER MICROCONTROLLER GmbH & Co. KG *
3
* Solutions for real time microcontroller applications *
4
**********************************************************************
5
* *
6
* (c) 2014 - 2016 SEGGER Microcontroller GmbH & Co. KG *
7
* *
8
* www.segger.com Support: support@segger.com *
9
* *
10
**********************************************************************
11
* *
12
* SEGGER RTT * Real Time Transfer for embedded targets *
13
* *
14
**********************************************************************
15
* *
16
* All rights reserved. *
17
* *
18
* SEGGER strongly recommends to not make any changes *
19
* to or modify the source code of this software in order to stay *
20
* compatible with the RTT protocol and J-Link. *
21
* *
22
* Redistribution and use in source and binary forms, with or *
23
* without modification, are permitted provided that the following *
24
* conditions are met: *
25
* *
26
* o Redistributions of source code must retain the above copyright *
27
* notice, this list of conditions and the following disclaimer. *
28
* *
29
* o Redistributions in binary form must reproduce the above *
30
* copyright notice, this list of conditions and the following *
31
* disclaimer in the documentation and/or other materials provided *
32
* with the distribution. *
33
* *
34
* o Neither the name of SEGGER Microcontroller GmbH & Co. KG *
35
* nor the names of its contributors may be used to endorse or *
36
* promote products derived from this software without specific *
37
* prior written permission. *
38
* *
39
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND *
40
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, *
41
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF *
42
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE *
43
* DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR *
44
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *
45
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT *
46
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; *
47
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
48
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
49
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *
50
* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH *
51
* DAMAGE. *
52
* *
53
**********************************************************************
54
---------------------------END-OF-HEADER------------------------------
55
File : SEGGER_RTT_Syscalls_GCC.c
56
Purpose : Low-level functions for using printf() via RTT in GCC.
57
To use RTT for printf output, include this file in your
58
application.
59
Revision: $Rev: 4351 $
60
----------------------------------------------------------------------
61
*/
62
#if (defined __GNUC__) && !(defined __SES_ARM) && !(defined __CROSSWORKS_ARM)
63
64
#include <reent.h>
// required for _write_r
65
#include "SEGGER_RTT.h"
66
67
68
/*********************************************************************
69
*
70
* Types
71
*
72
**********************************************************************
73
*/
74
//
75
// If necessary define the _reent struct
76
// to match the one passed by the used standard library.
77
//
78
struct
_reent;
79
80
/*********************************************************************
81
*
82
* Function prototypes
83
*
84
**********************************************************************
85
*/
86
int
_write(
int
file,
char
*ptr,
size_t
len);
87
int
_write_r(
struct
_reent *r,
int
file,
const
void
*ptr,
size_t
len);
88
89
/*********************************************************************
90
*
91
* Global functions
92
*
93
**********************************************************************
94
*/
95
96
/*********************************************************************
97
*
98
* _write()
99
*
100
* Function description
101
* Low-level write function.
102
* libc subroutines will use this system routine for output to all files,
103
* including stdout.
104
* Write data via RTT.
105
*/
106
int
_write(
int
file,
char
*ptr,
int
len) {
107
(void) file;
/* Not used, avoid warning */
108
SEGGER_RTT_Write(0, ptr, len);
109
return
len;
110
}
111
112
/*********************************************************************
113
*
114
* _write_r()
115
*
116
* Function description
117
* Low-level reentrant write function.
118
* libc subroutines will use this system routine for output to all files,
119
* including stdout.
120
* Write data via RTT.
121
*/
122
int
_write_r(
struct
_reent *r,
int
file,
const
void
*ptr,
int
len) {
123
(void) file;
/* Not used, avoid warning */
124
(void) r;
/* Not used, avoid warning */
125
SEGGER_RTT_Write(0, ptr, len);
126
return
len;
127
}
128
129
#endif
130
/****** End Of File *************************************************/
Generated by
1.8.15