15#ifndef TRC_ENTRY_TABLE_H
16#define TRC_ENTRY_TABLE_H
18#if (TRC_USE_TRACEALYZER_RECORDER == 1)
32#define TRC_ENTRY_CREATE_WITH_ADDRESS(_pvAddress, _pxEntryHandle) (xTraceEntryCreate(_pxEntryHandle) == TRC_SUCCESS ? (((TraceEntry_t*)*(_pxEntryHandle))->pvAddress = (_pvAddress), TRC_SUCCESS) : TRC_FAIL)
33#define TRC_ENTRY_SET_STATE(xEntryHandle, uxStateIndex, uxState) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_2(((TraceEntry_t*)(xEntryHandle))->xStates[uxStateIndex] = (uxState), TRC_SUCCESS)
34#define TRC_ENTRY_SET_OPTIONS(xEntryHandle, uiMask) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_2(((TraceEntry_t*)(xEntryHandle))->uiOptions |= (uiMask), TRC_SUCCESS)
35#define TRC_ENTRY_CLEAR_OPTIONS(xEntryHandle, uiMask) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_2(((TraceEntry_t*)(xEntryHandle))->uiOptions &= ~(uiMask), TRC_SUCCESS)
36#define TRC_ENTRY_GET_ADDRESS(xEntryHandle, ppvAddress) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_2(*(ppvAddress) = ((TraceEntry_t*)(xEntryHandle))->pvAddress, TRC_SUCCESS)
37#define TRC_ENTRY_GET_ADDRESS_RETURN(xEntryHandle) (((TraceEntry_t*)(xEntryHandle))->pvAddress)
38#define TRC_ENTRY_GET_SYMBOL(xEntryHandle, pszSymbol) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_2(*(pszSymbol) = ((TraceEntry_t*)(xEntryHandle))->szSymbol, TRC_SUCCESS)
39#define TRC_ENTRY_GET_STATE(xEntryHandle, uxStateIndex, puxState) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_2(*(puxState) = ((TraceEntry_t*)(xEntryHandle))->xStates[uxStateIndex], TRC_SUCCESS)
40#define TRC_ENTRY_GET_STATE_RETURN(xEntryHandle, uxStateIndex) (((TraceEntry_t*)(xEntryHandle))->xStates[uxStateIndex])
41#define TRC_ENTRY_GET_OPTIONS(xEntryHandle, puiOptions) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_2(*(puiOptions) = ((TraceEntry_t*)(xEntryHandle))->uiOptions, TRC_SUCCESS)
43#define TRC_ENTRY_TABLE_STATE_COUNT (3UL)
44#define TRC_ENTRY_TABLE_SYMBOL_LENGTH ((uint32_t)(TRC_CFG_ENTRY_SYMBOL_MAX_LENGTH))
47#define TRC_ENTRY_TABLE_SLOT_SYMBOL_SIZE (((((sizeof(char) * (uint32_t)(TRC_ENTRY_TABLE_SYMBOL_LENGTH) - sizeof(uint32_t)) + (sizeof(TraceUnsignedBaseType_t) - 1UL)) / sizeof(TraceUnsignedBaseType_t)) * sizeof(TraceUnsignedBaseType_t)) + sizeof(uint32_t))
49#if (TRC_CFG_ENTRY_SLOTS > 256UL)
50typedef uint16_t TraceEntryIndex_t;
51#define TRC_ENTRY_INDEX_ALIGNMENT_MULTIPLE (4)
53typedef uint8_t TraceEntryIndex_t;
54#define TRC_ENTRY_INDEX_ALIGNMENT_MULTIPLE (8)
57#define TRC_ENTRY_TABLE_SLOTS ((((TRC_CFG_ENTRY_SLOTS) + (TRC_ENTRY_INDEX_ALIGNMENT_MULTIPLE) - 1) / TRC_ENTRY_INDEX_ALIGNMENT_MULTIPLE) * TRC_ENTRY_INDEX_ALIGNMENT_MULTIPLE)
59typedef struct EntryIndexTable
61 TraceEntryIndex_t axFreeIndexes[TRC_ENTRY_TABLE_SLOTS];
62 uint32_t uiFreeIndexCount;
64} TraceEntryIndexTable_t;
70 TraceUnsignedBaseType_t xStates[TRC_ENTRY_TABLE_STATE_COUNT];
72 char szSymbol[TRC_ENTRY_TABLE_SLOT_SYMBOL_SIZE];
75typedef struct TraceEntryTable
77 TraceUnsignedBaseType_t uxSlots;
78 TraceUnsignedBaseType_t uxEntrySymbolLength;
79 TraceUnsignedBaseType_t uxEntryStateCount;
94traceResult xTraceEntryIndexTableInitialize(TraceEntryIndexTable_t*
const pxBuffer);
107traceResult xTraceEntryTableInitialize(TraceEntryTable_t*
const pxBuffer);
138traceResult
xTraceEntryFind(
const void*
const pvAddress, TraceEntryHandle_t* pxEntryHandle);
171traceResult
xTraceEntrySetSymbol(
const TraceEntryHandle_t xEntryHandle,
const char* szSymbol, uint32_t uiLength);
173#if ((TRC_CFG_USE_TRACE_ASSERT) == 1)
184traceResult xTraceEntryCreateWithAddress(
void*
const pvAddress, TraceEntryHandle_t* pxEntryHandle);
196traceResult xTraceEntrySetState(
const TraceEntryHandle_t xEntryHandle, TraceUnsignedBaseType_t uxStateIndex, TraceUnsignedBaseType_t uxState);
207traceResult xTraceEntrySetOptions(
const TraceEntryHandle_t xEntryHandle, uint32_t uiMask);
218traceResult xTraceEntryClearOptions(
const TraceEntryHandle_t xEntryHandle, uint32_t uiMask);
229traceResult xTraceEntryGetAddress(
const TraceEntryHandle_t xEntryHandle,
void **ppvAddress);
238void* pvTraceEntryGetAddressReturn(
const TraceEntryHandle_t xEntryHandle);
249traceResult xTraceEntryGetSymbol(
const TraceEntryHandle_t xEntryHandle,
const char** pszSymbol);
261traceResult xTraceEntryGetState(
const TraceEntryHandle_t xEntryHandle, TraceUnsignedBaseType_t uxStateIndex, TraceUnsignedBaseType_t *puxState);
271TraceUnsignedBaseType_t xTraceEntryGetStateReturn(
const TraceEntryHandle_t xEntryHandle, TraceUnsignedBaseType_t uxStateIndex);
282traceResult xTraceEntryGetOptions(
const TraceEntryHandle_t xEntryHandle, uint32_t *puiOptions);
286#define xTraceEntryCreateWithAddress TRC_ENTRY_CREATE_WITH_ADDRESS
288#define xTraceEntrySetState TRC_ENTRY_SET_STATE
289#define xTraceEntrySetOptions TRC_ENTRY_SET_OPTIONS
290#define xTraceEntryClearOptions TRC_ENTRY_CLEAR_OPTIONS
292#define xTraceEntryGetAddress TRC_ENTRY_GET_ADDRESS
293#define pvTraceEntryGetAddressReturn TRC_ENTRY_GET_ADDRESS_RETURN
294#define xTraceEntryGetSymbol TRC_ENTRY_GET_SYMBOL
295#define xTraceEntryGetState TRC_ENTRY_GET_STATE
296#define xTraceEntryGetStateReturn TRC_ENTRY_GET_STATE_RETURN
297#define xTraceEntryGetOptions TRC_ENTRY_GET_OPTIONS
309#define xTraceEntryCreate(_pxEntryHandle) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_2((void)(_pxEntryHandle), TRC_SUCCESS)
311#define xTraceEntryDelete(_xEntryHandle) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_2((void)(_xEntryHandle), TRC_SUCCESS)
313#define xTraceEntryFind(_pvAddress, _pxEntryHandle) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3((void)(_pvAddress), (void)(_pxEntryHandle), TRC_SUCCESS)
315#define xTraceEntryGetCount(_puiCount) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_2((void)(_puiCount), TRC_SUCCESS)
317#define xTraceEntryGetAtIndex(_index, _pxEntryHandle) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3((void)(_index), (void)(_pxEntryHandle), TRC_SUCCESS)
319#define xTraceEntrySetSymbol(_xEntryHandle, _szSymbol, _uiLength) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_4((void)(_xEntryHandle), (void)(_szSymbol), (void)(_uiLength), TRC_SUCCESS)
321#define xTraceEntryCreateWithAddress(_pvAddress, _pxEntryHandle) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3((void)(_pvAddress), (void)(_pxEntryHandle), TRC_SUCCESS)
323#define xTraceEntrySetState(_xEntryHandle, _uxStateIndex, _uxState) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_4((void)(_xEntryHandle), (void)(_uxStateIndex), (void)(_uxState), TRC_SUCCESS)
325#define xTraceEntrySetOptions(_xEntryHandle, _uiMask) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3((void)(_xEntryHandle), (void)(_uiMask), TRC_SUCCESS)
327#define xTraceEntryClearOptions(_xEntryHandle, _uiMask) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3((void)(_xEntryHandle), (void)(_uiMask), TRC_SUCCESS)
329#define xTraceEntryGetAddress(_xEntryHandle, _ppvAddress) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3((void)(_xEntryHandle), (void)(_ppvAddress), TRC_SUCCESS)
331#define pvTraceEntryGetAddressReturn(_xEntryHandle) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_2((void)(_xEntryHandle), (void*)0)
333#define xTraceEntryGetSymbol(_xEntryHandle, _pszSymbol) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3((void)(_xEntryHandle), (void)(_pszSymbol), TRC_SUCCESS)
335#define xTraceEntryGetState(_xEntryHandle, _uxStateIndex, _puxState) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_4((void)(_xEntryHandle), (void)(_uxStateIndex), (void)(_puxState), TRC_SUCCESS)
337#define xTraceEntryGetStateReturn(_xEntryHandle, _uxStateIndex) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3((void)(_xEntryHandle), (void)(_uxStateIndex), 0)
339#define xTraceEntryGetOptions(_xEntryHandle, _puiOptions) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3((void)(_xEntryHandle), (void)(_puiOptions), TRC_SUCCESS)
traceResult xTraceEntryCreate(TraceEntryHandle_t *pxEntryHandle)
Creates trace entry.
Definition trcEntryTable.c:78
traceResult xTraceEntryFind(const void *const pvAddress, TraceEntryHandle_t *pxEntryHandle)
Finds trace entry mapped to object address.
Definition trcEntryTable.c:166
traceResult xTraceEntrySetSymbol(const TraceEntryHandle_t xEntryHandle, const char *szSymbol, uint32_t uiLength)
Sets symbol for entry.
Definition trcEntryTable.c:195
struct TraceEntry TraceEntry_t
traceResult xTraceEntryGetCount(uint32_t *puiCount)
Gets the number of entries in the trace entry table.
Definition trcEntryTable.c:230
traceResult xTraceEntryDelete(TraceEntryHandle_t xEntryHandle)
Deletes trace entry.
Definition trcEntryTable.c:125
traceResult xTraceEntryGetAtIndex(uint32_t index, TraceEntryHandle_t *pxEntryHandle)
Gets trace table entry at index.
Definition trcEntryTable.c:243
Definition trcEntryTable.h:68