e3292cf4006dcc63b50962a0be54b87ab0086d8e
[dpdk.git] / lib / librte_telemetry / rte_telemetry_internal.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2018 Intel Corporation
3  */
4
5 #include <rte_log.h>
6 #include <rte_tailq.h>
7
8 #ifndef _RTE_TELEMETRY_INTERNAL_H_
9 #define _RTE_TELEMETRY_INTERNAL_H_
10
11 /* Logging Macros */
12 extern int telemetry_log_level;
13
14 #define TELEMETRY_LOG(level, fmt, args...) \
15         rte_log(RTE_LOG_ ##level, telemetry_log_level, "%s(): "fmt "\n", \
16                 __func__, ##args)
17
18 #define TELEMETRY_LOG_ERR(fmt, args...) \
19         TELEMETRY_LOG(ERR, fmt, ## args)
20
21 #define TELEMETRY_LOG_WARN(fmt, args...) \
22         TELEMETRY_LOG(WARNING, fmt, ## args)
23
24 #define TELEMETRY_LOG_INFO(fmt, args...) \
25         TELEMETRY_LOG(INFO, fmt, ## args)
26
27 typedef struct telemetry_client {
28         char *file_path;
29         int fd;
30         TAILQ_ENTRY(telemetry_client) client_list;
31 } telemetry_client;
32
33 typedef struct telemetry_impl {
34         int accept_fd;
35         int server_fd;
36         pthread_t thread_id;
37         int thread_status;
38         uint32_t socket_id;
39         int reg_index;
40         int metrics_register_done;
41         TAILQ_HEAD(, telemetry_client) client_list_head;
42         struct telemetry_client *request_client;
43         int register_fail_count;
44 } telemetry_impl;
45
46 int32_t
47 rte_telemetry_parse_client_message(struct telemetry_impl *telemetry, char *buf);
48
49 int32_t
50 rte_telemetry_send_error_response(struct telemetry_impl *telemetry,
51         int error_type);
52
53 int32_t
54 rte_telemetry_register_client(struct telemetry_impl *telemetry,
55         const char *client_path);
56
57 int32_t
58 rte_telemetry_unregister_client(struct telemetry_impl *telemetry,
59         const char *client_path);
60
61 #endif