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 */
|