xref: /dpdk/lib/telemetry/telemetry_internal.h (revision 68150b90bda5e8f81ad1b1bad82be653b1d42a81)
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2020 Intel Corporation
3  */
4 
5 #ifndef _RTE_TELEMETRY_INTERNAL_H_
6 #define _RTE_TELEMETRY_INTERNAL_H_
7 
8 #include <rte_compat.h>
9 #include <rte_os.h>
10 #include "rte_telemetry.h"
11 
12 /**
13  * @internal
14  *
15  * @file
16  * RTE Telemetry Legacy and internal definitions
17  */
18 
19 /**
20  * @internal
21  * Value representing if data is required for the command
22  */
23 enum rte_telemetry_legacy_data_req {
24 	DATA_NOT_REQ = 0,
25 	DATA_REQ
26 };
27 
28 /**
29  * This telemetry callback is used when registering a legacy telemetry command.
30  * It handles getting and formatting stats to be returned to telemetry when
31  * requested. Stats up to buf_len in length are put in the buffer.
32  *
33  * @param cmd
34  * The cmd that was requested by the client.
35  * @param params
36  * Contains data required by the callback function.
37  * @param buffer
38  * A buffer to hold the formatted response.
39  * @param buf_len
40  * Length of the buffer.
41  *
42  * @return
43  * Length of buffer used on success.
44  * @return
45  * Negative integer on error.
46  */
47 typedef int (*telemetry_legacy_cb)(const char *cmd, const char *params,
48 		char *buffer, int buf_len);
49 
50 /**
51  * @internal
52  * Counter for the number of registered legacy callbacks
53  */
54 extern int num_legacy_callbacks;
55 
56 /**
57  * @internal
58  * Used for handling data received over the legacy telemetry socket.
59  *
60  * @return
61  * Void.
62  */
63 void *
64 legacy_client_handler(void *sock_id);
65 
66 /**
67  * @internal
68  *
69  * Used when registering a command and callback function with
70  * telemetry legacy support.
71  *
72  * @return
73  *  0 on success.
74  * @return
75  *  -EINVAL for invalid parameters failure.
76  *  @return
77  *  -ENOENT if max callbacks limit has been reached.
78  */
79 __rte_internal
80 int
81 rte_telemetry_legacy_register(const char *cmd,
82 		enum rte_telemetry_legacy_data_req data_req,
83 		telemetry_legacy_cb fn);
84 
85 /**
86  * @internal
87  * Log function type, to allow passing as parameter if necessary
88  */
89 typedef int (*rte_log_fn)(uint32_t level, uint32_t logtype, const char *format, ...);
90 
91 /**
92  * @internal
93  * Initialize Telemetry.
94  *
95  * @param runtime_dir
96  * The runtime directory of DPDK.
97  * @param cpuset
98  * The CPU set to be used for setting the thread affinity.
99  * @param log_fn
100  * Function pointer to the rte_log function for logging use
101  * @param registered_logtype
102  * The registered log type to use for logging
103  *
104  * @return
105  *  0 on success.
106  * @return
107  *  -1 on failure.
108  */
109 __rte_internal
110 int
111 rte_telemetry_init(const char *runtime_dir, const char *rte_version, rte_cpuset_t *cpuset);
112 
113 #endif
114