15#ifndef TRC_ENTRY_TABLE_H
16#define TRC_ENTRY_TABLE_H
18#if (TRC_USE_TRACEALYZER_RECORDER == 1)
20#if (TRC_CFG_RECORDER_MODE == TRC_RECORDER_MODE_STREAMING)
34#define TRC_ENTRY_CREATE_WITH_ADDRESS(_pvAddress, _pxEntryHandle) (xTraceEntryCreate(_pxEntryHandle) == TRC_SUCCESS ? (((TraceEntry_t*)*(_pxEntryHandle))->pvAddress = (_pvAddress), TRC_SUCCESS) : TRC_FAIL)
35#define TRC_ENTRY_SET_STATE(xEntryHandle, uxStateIndex, uxState) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_2(((TraceEntry_t*)(xEntryHandle))->xStates[uxStateIndex] = (uxState), TRC_SUCCESS)
36#define TRC_ENTRY_SET_OPTIONS(xEntryHandle, uiMask) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_2(((TraceEntry_t*)(xEntryHandle))->uiOptions |= (uiMask), TRC_SUCCESS)
37#define TRC_ENTRY_CLEAR_OPTIONS(xEntryHandle, uiMask) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_2(((TraceEntry_t*)(xEntryHandle))->uiOptions &= ~(uiMask), TRC_SUCCESS)
38#define TRC_ENTRY_GET_ADDRESS(xEntryHandle, ppvAddress) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_2(*(ppvAddress) = ((TraceEntry_t*)(xEntryHandle))->pvAddress, TRC_SUCCESS)
39#define TRC_ENTRY_GET_SYMBOL(xEntryHandle, pszSymbol) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_2(*(pszSymbol) = ((TraceEntry_t*)(xEntryHandle))->szSymbol, TRC_SUCCESS)
40#define TRC_ENTRY_GET_STATE(xEntryHandle, uxStateIndex, puxState) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_2(*(puxState) = ((TraceEntry_t*)(xEntryHandle))->xStates[uxStateIndex], TRC_SUCCESS)
41#define TRC_ENTRY_GET_STATE_RETURN(xEntryHandle, uxStateIndex) (((TraceEntry_t*)(xEntryHandle))->xStates[uxStateIndex])
42#define TRC_ENTRY_GET_OPTIONS(xEntryHandle, puiOptions) TRC_COMMA_EXPR_TO_STATEMENT_EXPR_2(*(puiOptions) = ((TraceEntry_t*)(xEntryHandle))->uiOptions, TRC_SUCCESS)
44#define TRC_ENTRY_TABLE_STATE_COUNT (3UL)
45#define TRC_ENTRY_TABLE_SYMBOL_LENGTH ((uint32_t)(TRC_CFG_ENTRY_SYMBOL_MAX_LENGTH))
48#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))
50#if (TRC_CFG_ENTRY_SLOTS > 256UL)
51typedef uint16_t TraceEntryIndex_t;
52#define TRC_ENTRY_INDEX_ALIGNMENT_MULTIPLE (4)
54typedef uint8_t TraceEntryIndex_t;
55#define TRC_ENTRY_INDEX_ALIGNMENT_MULTIPLE (8)
58#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)
60typedef struct EntryIndexTable
62 TraceEntryIndex_t axFreeIndexes[TRC_ENTRY_TABLE_SLOTS];
63 uint32_t uiFreeIndexCount;
65} TraceEntryIndexTable_t;
71 TraceUnsignedBaseType_t xStates[TRC_ENTRY_TABLE_STATE_COUNT];
73 char szSymbol[TRC_ENTRY_TABLE_SLOT_SYMBOL_SIZE];
76typedef struct TraceEntryTable
78 TraceUnsignedBaseType_t uxSlots;
79 TraceUnsignedBaseType_t uxEntrySymbolLength;
80 TraceUnsignedBaseType_t uxEntryStateCount;
95traceResult xTraceEntryIndexTableInitialize(TraceEntryIndexTable_t*
const pxBuffer);
108traceResult xTraceEntryTableInitialize(TraceEntryTable_t*
const pxBuffer);
139traceResult
xTraceEntryFind(
const void*
const pvAddress, TraceEntryHandle_t* pxEntryHandle);
172traceResult
xTraceEntrySetSymbol(
const TraceEntryHandle_t xEntryHandle,
const char* szSymbol, uint32_t uiLength);
174#if ((TRC_CFG_USE_TRACE_ASSERT) == 1)
185traceResult xTraceEntryCreateWithAddress(
void*
const pvAddress, TraceEntryHandle_t* pxEntryHandle);
197traceResult xTraceEntrySetState(
const TraceEntryHandle_t xEntryHandle, TraceUnsignedBaseType_t uxStateIndex, TraceUnsignedBaseType_t uxState);
208traceResult xTraceEntrySetOptions(
const TraceEntryHandle_t xEntryHandle, uint32_t uiMask);
219traceResult xTraceEntryClearOptions(
const TraceEntryHandle_t xEntryHandle, uint32_t uiMask);
230traceResult xTraceEntryGetAddress(
const TraceEntryHandle_t xEntryHandle,
void **ppvAddress);
241traceResult xTraceEntryGetSymbol(
const TraceEntryHandle_t xEntryHandle,
const char** pszSymbol);
253traceResult xTraceEntryGetState(
const TraceEntryHandle_t xEntryHandle, TraceUnsignedBaseType_t uxStateIndex, TraceUnsignedBaseType_t *puxState);
263TraceUnsignedBaseType_t xTraceEntryGetStateReturn(
const TraceEntryHandle_t xEntryHandle, TraceUnsignedBaseType_t uxStateIndex);
274traceResult xTraceEntryGetOptions(
const TraceEntryHandle_t xEntryHandle, uint32_t *puiOptions);
278#define xTraceEntryCreateWithAddress TRC_ENTRY_CREATE_WITH_ADDRESS
280#define xTraceEntrySetState TRC_ENTRY_SET_STATE
281#define xTraceEntrySetOptions TRC_ENTRY_SET_OPTIONS
282#define xTraceEntryClearOptions TRC_ENTRY_CLEAR_OPTIONS
284#define xTraceEntryGetAddress TRC_ENTRY_GET_ADDRESS
285#define xTraceEntryGetSymbol TRC_ENTRY_GET_SYMBOL
286#define xTraceEntryGetState TRC_ENTRY_GET_STATE
287#define xTraceEntryGetStateReturn TRC_ENTRY_GET_STATE_RETURN
288#define xTraceEntryGetOptions TRC_ENTRY_GET_OPTIONS
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:235
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:248
Definition: trcEntryTable.h:69