Line data Source code
1 0 : /* 2 : * Copyright (c) 2019 Intel corporation 3 : * 4 : * SPDX-License-Identifier: Apache-2.0 5 : */ 6 : 7 : #ifndef ZEPHYR_INCLUDE_TRACING_TRACING_FORMAT_H 8 : #define ZEPHYR_INCLUDE_TRACING_TRACING_FORMAT_H 9 : 10 : #include <zephyr/toolchain/common.h> 11 : 12 : #ifdef __cplusplus 13 : extern "C" { 14 : #endif 15 : 16 : /** 17 : * @brief Tracing format APIs 18 : * @defgroup subsys_tracing_format_apis Tracing format APIs 19 : * @ingroup subsys_tracing 20 : * @{ 21 : */ 22 : 23 : /** @brief A structure to represent tracing data format. */ 24 1 : typedef struct tracing_data { 25 0 : uint8_t *data; 26 0 : uint32_t length; 27 1 : } __packed tracing_data_t; 28 : 29 : /** 30 : * @brief Macro to trace a message in string format. 31 : * 32 : * @param fmt The format string. 33 : * @param ... The format arguments. 34 : */ 35 1 : #define TRACING_STRING(fmt, ...) \ 36 : do { \ 37 : tracing_format_string(fmt, ##__VA_ARGS__); \ 38 : } while (false) 39 : 40 : /** 41 : * @brief Macro to format data to tracing data format. 42 : * 43 : * @param x Data field. 44 : */ 45 1 : #define TRACING_FORMAT_DATA(x) \ 46 : ((struct tracing_data){.data = (uint8_t *)&(x), .length = sizeof((x))}) 47 : 48 : /** 49 : * @brief Macro to trace a message in tracing data format. 50 : * 51 : * All the parameters should be struct tracing_data. 52 : */ 53 1 : #define TRACING_DATA(...) \ 54 : do { \ 55 : struct tracing_data arg[] = {__VA_ARGS__}; \ 56 : \ 57 : tracing_format_data(arg, sizeof(arg) / \ 58 : sizeof(struct tracing_data)); \ 59 : } while (false) 60 : 61 : /** 62 : * @brief Tracing a message in string format. 63 : * 64 : * @param str String to format. 65 : * @param ... Variable length arguments. 66 : */ 67 1 : void tracing_format_string(const char *str, ...); 68 : 69 : /** 70 : * @brief Tracing a message in raw data format. 71 : * 72 : * @param data Raw data to be traced. 73 : * @param length Raw data length. 74 : */ 75 1 : void tracing_format_raw_data(uint8_t *data, uint32_t length); 76 : 77 : /** 78 : * @brief Tracing a message in tracing data format. 79 : * 80 : * @param tracing_data_array Tracing_data format data array to be traced. 81 : * @param count Tracing_data array data count. 82 : */ 83 1 : void tracing_format_data(tracing_data_t *tracing_data_array, uint32_t count); 84 : 85 : /** @} */ /* end of subsys_tracing_format_apis */ 86 : 87 : #ifdef __cplusplus 88 : } 89 : #endif 90 : 91 : #endif /* ZEPHYR_INCLUDE_TRACING_TRACING_FORMAT_H */