Percepio Trace Recorder  v4.6.6
trcStreamPort.h
1 /*
2 * Trace Recorder for Tracealyzer v4.6.6
3 * Copyright 2021 Percepio AB
4 * www.percepio.com
5 *
6 * SPDX-License-Identifier: Apache-2.0
7 *
8 * The interface definitions for trace streaming ("stream ports").
9 * This "stream port" sets up the recorder to stream to a Ring Buffer.
10 */
11 
12 #ifndef TRC_STREAM_PORT_H
13 #define TRC_STREAM_PORT_H
14 
15 #if (TRC_USE_TRACEALYZER_RECORDER == 1)
16 
17 #if (TRC_CFG_RECORDER_MODE == TRC_RECORDER_MODE_STREAMING)
18 
19 #include <trcTypes.h>
20 #include <trcStreamPortConfig.h>
21 #include <trcRecorder.h>
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
32 #define TRC_EXTERNAL_BUFFERS 1
33 
39 #define TRC_SEND_NAME_ONLY_ON_DELETE 1
40 
47 #define TRC_USE_INTERNAL_BUFFER 0
48 
49 #define TRC_STREAM_PORT_BUFFER_SIZE ((((TRC_CFG_STREAM_PORT_BUFFER_SIZE) + sizeof(uint32_t) - 1) / sizeof(uint32_t)) * sizeof(uint32_t))
50 
54 typedef struct TraceMultiCoreBuffer
55 {
56  uint32_t uiSize;
57  uint8_t uiBuffer[TRC_STREAM_PORT_BUFFER_SIZE];
58 } TraceMultiCoreBuffer_t;
59 
63 typedef struct TraceRingBuffer
64 {
65  volatile uint8_t START_MARKERS[12];
66  TraceHeaderBuffer_t xHeaderBuffer;
67  TraceTimestampBuffer_t xTimestampInfo;
68  TraceEntryTableBuffer_t xEntryTableBuffer;
69  TraceMultiCoreBuffer_t xEventBuffer;
70  volatile uint8_t END_MARKERS[12];
71 } TraceRingBuffer_t;
72 
76 typedef struct TraceStreamPortData
77 {
78  TraceMultiCoreEventBuffer_t xMultiCoreEventBuffer;
79  TraceRingBuffer_t xRingBuffer;
80 } TraceStreamPortData_t;
81 
82 extern TraceStreamPortData_t* pxStreamPortData;
83 
88 #define TRC_STREAM_PORT_DATA_BUFFER_SIZE (sizeof(TraceStreamPortData_t))
89 
93 typedef struct TraceStreamPortBuffer
94 {
95  uint8_t buffer[(TRC_STREAM_PORT_DATA_BUFFER_SIZE)];
97 
108 traceResult xTraceStreamPortInitialize(TraceStreamPortBuffer_t* pxBuffer);
109 
119 #define xTraceStreamPortAllocate(uiSize, ppvData) ((void)uiSize, xTraceStaticBufferGet(ppvData))
120 
133 traceResult xTraceStreamPortCommit(void* pvData, uint32_t uiSize, int32_t* piBytesCommitted);
134 
145 #define xTraceStreamPortWriteData(pvData, uiSize, piBytesWritten) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_4((void)(pvData), (void)(uiSize), (void)(piBytesWritten), TRC_SUCCESS)
146 
157 #define xTraceStreamPortReadData(pvData, uiSize, piBytesRead) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_4((void)(pvData), (void)(uiSize), (void)(piBytesRead), TRC_SUCCESS)
158 
167 #define xTraceStreamPortOnEnable(uiStartOption) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_2((void)(uiStartOption), TRC_SUCCESS)
168 
175 #define xTraceStreamPortOnDisable() TRC_COMMA_EXPR_TO_STATEMENT_EXPR_1(TRC_SUCCESS)
176 
183 traceResult xTraceStreamPortOnTraceBegin(void);
184 
191 #define xTraceStreamPortOnTraceEnd() TRC_COMMA_EXPR_TO_STATEMENT_EXPR_1(TRC_SUCCESS)
192 
193 #ifdef __cplusplus
194 }
195 #endif
196 
197 #endif /*(TRC_CFG_RECORDER_MODE == TRC_RECORDER_MODE_STREAMING)*/
198 
199 #endif /*(TRC_USE_TRACEALYZER_RECORDER == 1)*/
200 
201 #endif /* TRC_STREAM_PORT_H */
TraceStreamPortBuffer
A structure representing the trace stream port buffer.
Definition: trcStreamPort.h:80
trcRecorder.h
The public API of the Percepio trace recorder.
TraceMultiCoreEventBuffer
Trace Multi-Core Event Buffer Structure.
Definition: trcMultiCoreEventBuffer.h:38
TraceEntryTableBuffer
Definition: trcEntryTable.h:62