telemetry: move some functions to metrics library
[dpdk.git] / lib / librte_metrics / rte_metrics_telemetry.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2020 Intel Corporation
3  */
4
5 #ifdef RTE_LIBRTE_TELEMETRY
6 #include <jansson.h>
7 #else
8 #define json_t void *
9 #endif
10
11 #include "rte_metrics.h"
12
13 #ifndef _RTE_METRICS_TELEMETRY_H_
14 #define _RTE_METRICS_TELEMETRY_H_
15
16
17 enum rte_telemetry_stats_type {
18         PORT_STATS = 0,
19         GLOBAL_STATS = 1
20 };
21
22 struct telemetry_encode_param {
23         enum rte_telemetry_stats_type type;
24         union {
25                 struct port_param {
26                         int num_metric_ids;
27                         uint32_t metric_ids[RTE_METRICS_MAX_METRICS];
28                         int num_port_ids;
29                         uint32_t port_ids[RTE_MAX_ETHPORTS];
30                 } pp;
31                 struct global_param {
32                         int num_metric_ids;
33                         uint32_t metric_ids[RTE_METRICS_MAX_METRICS];
34                 } gp;
35         };
36 };
37
38 struct telemetry_metrics_data {
39         int reg_index[RTE_MAX_ETHPORTS];
40         int metrics_register_done;
41 };
42
43 struct telemetry_metrics_data tel_met_data;
44
45 __rte_experimental
46 int32_t rte_metrics_tel_reg_all_ethdev(int *metrics_register_done,
47                 int *reg_index_list);
48
49 __rte_experimental
50 int32_t
51 rte_metrics_tel_encode_json_format(struct telemetry_encode_param *ep,
52                 char **json_buffer);
53
54 __rte_experimental
55 int32_t
56 rte_metrics_tel_get_global_stats(struct telemetry_encode_param *ep);
57
58 __rte_experimental
59 int32_t
60 rte_metrics_tel_get_port_stats_ids(struct telemetry_encode_param *ep);
61
62 __rte_experimental
63 int32_t
64 rte_metrics_tel_get_ports_stats_json(struct telemetry_encode_param *ep,
65                 int *reg_index, char **json_buffer);
66
67 __rte_experimental
68 int32_t
69 rte_metrics_tel_extract_data(struct telemetry_encode_param *ep, json_t *data);
70
71 #endif