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