1 /* 2 * Percepio 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 for trace utility functions. 9 */ 10 11 #ifndef TRC_UTILITY_H 12 #define TRC_UTILITY_H 13 14 #ifndef TRC_MEMCPY 15 #define TRC_MEMCPY(dst, src, size) \ 16 { \ 17 uint32_t __i; \ 18 for (__i = 0; __i < size; __i++) { \ 19 ((uint8_t*)(dst))[__i] = ((uint8_t*)(src))[__i]; \ 20 } \ 21 } 22 #endif 23 24 #define TRC_STRCAT(dst, dst_size, pDstLength, src) \ 25 { \ 26 TraceUnsignedBaseType_t uxTRC_STRCAT_INDEX = 0; \ 27 while (*(pDstLength) < (dst_size)) \ 28 { \ 29 dst[*(pDstLength)] = src[uxTRC_STRCAT_INDEX]; \ 30 if (dst[*(pDstLength)] == 0) \ 31 break; \ 32 (*(pDstLength))++; \ 33 uxTRC_STRCAT_INDEX++; \ 34 } \ 35 } 36 37 #if (defined(TRC_CFG_USE_GCC_STATEMENT_EXPR) && TRC_CFG_USE_GCC_STATEMENT_EXPR == 1) || __GNUC__ || __IAR_SYSTEMS_ICC__ || __TI_ARM__ 38 #define TRC_COMMA_EXPR_TO_STATEMENT_EXPR_1(e1) __extension__({e1;}) 39 #define TRC_COMMA_EXPR_TO_STATEMENT_EXPR_2(e1, e2) __extension__({e1; e2;}) 40 #define TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3(e1, e2, e3) __extension__({e1; e2; e3;}) 41 #define TRC_COMMA_EXPR_TO_STATEMENT_EXPR_4(e1, e2, e3, e4) __extension__({e1; e2; e3; e4;}) 42 #define TRC_COMMA_EXPR_TO_STATEMENT_EXPR_5(e1, e2, e3, e4, e5) __extension__({e1; e2; e3; e4; e5;}) 43 #else 44 #define TRC_COMMA_EXPR_TO_STATEMENT_EXPR_1(e1) (e1) 45 #define TRC_COMMA_EXPR_TO_STATEMENT_EXPR_2(e1, e2) (e1, e2) 46 #define TRC_COMMA_EXPR_TO_STATEMENT_EXPR_3(e1, e2, e3) (e1, e2, e3) 47 #define TRC_COMMA_EXPR_TO_STATEMENT_EXPR_4(e1, e2, e3, e4) (e1, e2, e3, e4) 48 #define TRC_COMMA_EXPR_TO_STATEMENT_EXPR_5(e1, e2, e3, e4, e5) (e1, e2, e3, e4, e5) 49 #endif 50 51 #endif /* TRC_UTILITY_H */ 52