NVIDIA DOCA SDK Data Center on a Chip Framework Documentation
doca_telemetry_exporter.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2021-2022 NVIDIA CORPORATION & AFFILIATES, ALL RIGHTS RESERVED.
3  *
4  * This software product is a proprietary product of NVIDIA CORPORATION &
5  * AFFILIATES (the "Company") and all right, title, and interest in and to the
6  * software product, including all associated intellectual property rights, are
7  * and shall remain exclusively with the Company.
8  *
9  * This software product is governed by the End User License Agreement
10  * provided with the software product.
11  *
12  */
13 
24 #ifndef DOCA_TELEMETRY_EXPORTER_H_
25 #define DOCA_TELEMETRY_EXPORTER_H_
26 
27 #include <stdint.h>
28 #include <stddef.h>
29 
30 #include <doca_compat.h>
31 #include <doca_error.h>
32 
33 #ifdef __cplusplus
34 extern "C" {
35 #endif
36 
45 
51 struct doca_telemetry_exporter_schema;
52 
56 struct doca_telemetry_exporter_source;
57 
62 
67 
71 struct doca_telemetry_exporter_field;
72 
76 struct doca_telemetry_exporter_type;
77 
83 #define DOCA_TELEMETRY_EXPORTER_FIELD_TYPE_BOOL "bool"
85 #define DOCA_TELEMETRY_EXPORTER_FIELD_TYPE_CHAR "char"
87 #define DOCA_TELEMETRY_EXPORTER_FIELD_TYPE_SHORT "short"
89 #define DOCA_TELEMETRY_EXPORTER_FIELD_TYPE_INT "int"
91 #define DOCA_TELEMETRY_EXPORTER_FIELD_TYPE_LONG "long"
93 #define DOCA_TELEMETRY_EXPORTER_FIELD_TYPE_LONGLONG "long long"
95 #define DOCA_TELEMETRY_EXPORTER_FIELD_TYPE_UCHAR "unsigned char"
97 #define DOCA_TELEMETRY_EXPORTER_FIELD_TYPE_USHORT "unsigned short"
99 #define DOCA_TELEMETRY_EXPORTER_FIELD_TYPE_UINT "unsigned int"
101 #define DOCA_TELEMETRY_EXPORTER_FIELD_TYPE_ULONG "unsigned long"
103 #define DOCA_TELEMETRY_EXPORTER_FIELD_TYPE_ULONGLONG "unsigned long long"
105 #define DOCA_TELEMETRY_EXPORTER_FIELD_TYPE_FLOAT "float"
107 #define DOCA_TELEMETRY_EXPORTER_FIELD_TYPE_DOUBLE "double"
109 #define DOCA_TELEMETRY_EXPORTER_FIELD_TYPE_INT8 "int8_t"
111 #define DOCA_TELEMETRY_EXPORTER_FIELD_TYPE_INT16 "int16_t"
113 #define DOCA_TELEMETRY_EXPORTER_FIELD_TYPE_INT32 "int32_t"
115 #define DOCA_TELEMETRY_EXPORTER_FIELD_TYPE_INT64 "int64_t"
117 #define DOCA_TELEMETRY_EXPORTER_FIELD_TYPE_UINT8 "uint8_t"
119 #define DOCA_TELEMETRY_EXPORTER_FIELD_TYPE_UINT16 "uint16_t"
121 #define DOCA_TELEMETRY_EXPORTER_FIELD_TYPE_UINT32 "uint32_t"
123 #define DOCA_TELEMETRY_EXPORTER_FIELD_TYPE_UINT64 "uint64_t"
125 #define DOCA_TELEMETRY_EXPORTER_FIELD_TYPE_TIMESTAMP DOCA_TELEMETRY_EXPORTER_FIELD_TYPE_UINT64
126 
128 #define DOCA_GUID_SIZE 16
132 typedef uint8_t doca_guid_t[DOCA_GUID_SIZE];
133 
134 /* ================================ DOCA SCHEMA ================================ */
153  struct doca_telemetry_exporter_schema **doca_schema);
154 
167 void doca_telemetry_exporter_schema_set_buf_size(struct doca_telemetry_exporter_schema *doca_schema, uint64_t size);
168 
183 doca_error_t doca_telemetry_exporter_schema_get_buf_size(struct doca_telemetry_exporter_schema *doca_schema,
184  uint64_t *size);
185 
198 void doca_telemetry_exporter_schema_set_buf_data_root(struct doca_telemetry_exporter_schema *doca_schema,
199  const char *path);
200 
217 doca_error_t doca_telemetry_exporter_schema_get_buf_data_root(struct doca_telemetry_exporter_schema *doca_schema,
218  const char **path);
219 
230 void doca_telemetry_exporter_schema_set_file_write_enabled(struct doca_telemetry_exporter_schema *doca_schema);
231 
244 void doca_telemetry_exporter_schema_set_file_write_max_size(struct doca_telemetry_exporter_schema *doca_schema,
245  size_t size);
246 
261 doca_error_t doca_telemetry_exporter_schema_get_file_write_max_size(struct doca_telemetry_exporter_schema *doca_schema,
262  size_t *size);
263 
276 void doca_telemetry_exporter_schema_set_file_write_max_age(struct doca_telemetry_exporter_schema *doca_schema,
278 
293 doca_error_t doca_telemetry_exporter_schema_get_file_write_max_age(struct doca_telemetry_exporter_schema *doca_schema,
295 
306 void doca_telemetry_exporter_schema_set_ipc_enabled(struct doca_telemetry_exporter_schema *doca_schema);
307 
320 void doca_telemetry_exporter_schema_set_ipc_sockets_dir(struct doca_telemetry_exporter_schema *doca_schema,
321  const char *sockets_dir);
322 
339 doca_error_t doca_telemetry_exporter_schema_get_ipc_sockets_dir(struct doca_telemetry_exporter_schema *doca_schema,
340  const char **sockets_dir);
341 
355 void doca_telemetry_exporter_schema_set_ipc_reconnect_time(struct doca_telemetry_exporter_schema *doca_schema,
356  uint32_t max_time);
357 
372 doca_error_t doca_telemetry_exporter_schema_get_ipc_reconnect_time(struct doca_telemetry_exporter_schema *doca_schema,
373  uint32_t *max_time);
374 
388 void doca_telemetry_exporter_schema_set_ipc_reconnect_tries(struct doca_telemetry_exporter_schema *doca_schema,
389  uint8_t tries);
390 
405 doca_error_t doca_telemetry_exporter_schema_get_ipc_reconnect_tries(struct doca_telemetry_exporter_schema *doca_schema,
406  uint8_t *tries);
407 
421 void doca_telemetry_exporter_schema_set_ipc_socket_timeout(struct doca_telemetry_exporter_schema *doca_schema,
422  uint32_t timeout);
423 
438 doca_error_t doca_telemetry_exporter_schema_get_ipc_socket_timeout(struct doca_telemetry_exporter_schema *doca_schema,
439  uint32_t *timeout);
440 
451 void doca_telemetry_exporter_schema_set_opaque_events_enabled(struct doca_telemetry_exporter_schema *doca_schema);
452 
465 doca_error_t doca_telemetry_exporter_type_create(struct doca_telemetry_exporter_type **type);
466 
483 doca_error_t doca_telemetry_exporter_type_add_field(struct doca_telemetry_exporter_type *type,
484  struct doca_telemetry_exporter_field *field);
485 
498 doca_error_t doca_telemetry_exporter_type_destroy(struct doca_telemetry_exporter_type *type);
499 
512 doca_error_t doca_telemetry_exporter_field_create(struct doca_telemetry_exporter_field **field);
513 
525 doca_error_t doca_telemetry_exporter_field_destroy(struct doca_telemetry_exporter_field *field);
526 
538 void doca_telemetry_exporter_field_set_name(struct doca_telemetry_exporter_field *field_info, const char *name);
539 
551 void doca_telemetry_exporter_field_set_description(struct doca_telemetry_exporter_field *field_info, const char *desc);
552 
565 void doca_telemetry_exporter_field_set_type_name(struct doca_telemetry_exporter_field *field_info, const char *type);
566 
577 void doca_telemetry_exporter_field_set_array_len(struct doca_telemetry_exporter_field *field_info, uint16_t len);
578 
598 doca_error_t doca_telemetry_exporter_schema_add_type(struct doca_telemetry_exporter_schema *doca_schema,
599  const char *new_type_name,
600  struct doca_telemetry_exporter_type *type,
602 
614 doca_error_t doca_telemetry_exporter_schema_destroy(struct doca_telemetry_exporter_schema *doca_schema);
615 
629 doca_error_t doca_telemetry_exporter_schema_start(struct doca_telemetry_exporter_schema *doca_schema);
630 
631 /* ================================ DOCA SOURCE ================================ */
632 
649 doca_error_t doca_telemetry_exporter_source_create(struct doca_telemetry_exporter_schema *doca_schema,
650  struct doca_telemetry_exporter_source **doca_source);
651 
663 void doca_telemetry_exporter_source_set_id(struct doca_telemetry_exporter_source *doca_source, const char *source_id);
664 
676 void doca_telemetry_exporter_source_set_tag(struct doca_telemetry_exporter_source *doca_source, const char *source_tag);
677 
692 doca_error_t doca_telemetry_exporter_source_start(struct doca_telemetry_exporter_source *doca_source);
693 
716 doca_error_t doca_telemetry_exporter_source_report(struct doca_telemetry_exporter_source *doca_source,
718  void *data,
719  int count);
720 
745 doca_error_t doca_telemetry_exporter_source_opaque_report(struct doca_telemetry_exporter_source *doca_source,
746  const doca_guid_t app_id,
747  uint64_t user_defined1,
748  uint64_t user_defined2,
749  const void *data,
750  uint32_t data_size);
751 
766  struct doca_telemetry_exporter_source *doca_source,
767  uint32_t *max_data_size);
768 
781 doca_error_t doca_telemetry_exporter_source_flush(struct doca_telemetry_exporter_source *doca_source);
782 
794 doca_error_t doca_telemetry_exporter_source_destroy(struct doca_telemetry_exporter_source *doca_source);
795 
796 /* ================================ Utilities ================================ */
797 
810 
827 doca_error_t doca_telemetry_exporter_check_ipc_status(struct doca_telemetry_exporter_source *doca_source,
829 
830 #ifdef __cplusplus
831 } /* extern "C" */
832 #endif
833 
836 #endif /* DOCA_TELEMETRY_EXPORTER_H_ */
char path[MAX_PATH_LEN+1]
doca_telemetry_exporter_timestamp_t timestamp
uint64_t len
#define DOCA_EXPERIMENTAL
To set a Symbol (or specifically a function) as experimental.
Definition: doca_compat.h:103
enum doca_error doca_error_t
DOCA API return codes.
uint8_t doca_guid_t[DOCA_GUID_SIZE]
DOCA GUID type.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_exporter_schema_get_ipc_reconnect_tries(struct doca_telemetry_exporter_schema *doca_schema, uint8_t *tries)
Get maximum IPC reconnect tries.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_exporter_source_opaque_report(struct doca_telemetry_exporter_source *doca_source, const doca_guid_t app_id, uint64_t user_defined1, uint64_t user_defined2, const void *data, uint32_t data_size)
Report opaque event data via DOCA source.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_exporter_schema_init(const char *schema_name, struct doca_telemetry_exporter_schema **doca_schema)
Initialize DOCA schema to prepare it for setting attributes and adding types. DOCA schema is used to ...
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_exporter_source_flush(struct doca_telemetry_exporter_source *doca_source)
Immediately flush the data of the DOCA source. This function is not thread-safe and should not be cal...
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_exporter_type_destroy(struct doca_telemetry_exporter_type *type)
Destroy doca telemetry type previously created by doca_telemetry_exporter_type_create()
DOCA_EXPERIMENTAL void doca_telemetry_exporter_field_set_type_name(struct doca_telemetry_exporter_field *field_info, const char *type)
Set doca telemetry field type.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_exporter_schema_get_ipc_reconnect_time(struct doca_telemetry_exporter_schema *doca_schema, uint32_t *max_time)
Get IPC reconnect time in milliseconds.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_exporter_schema_get_file_write_max_size(struct doca_telemetry_exporter_schema *doca_schema, size_t *size)
Get file maximum size.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_exporter_source_destroy(struct doca_telemetry_exporter_source *doca_source)
Destructor for DOCA source.
#define DOCA_GUID_SIZE
DOCA GUID size.
DOCA_EXPERIMENTAL void doca_telemetry_exporter_field_set_description(struct doca_telemetry_exporter_field *field_info, const char *desc)
Set doca telemetry field description.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_exporter_field_destroy(struct doca_telemetry_exporter_field *field)
Destroy field previously created by doca_telemetry_exporter_field_create()
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_exporter_schema_get_buf_size(struct doca_telemetry_exporter_schema *doca_schema, uint64_t *size)
Get buffer size.
enum doca_telemetry_exporter_ipc_status doca_telemetry_exporter_ipc_status_t
DOCA telemetry IPC status.
DOCA_EXPERIMENTAL void doca_telemetry_exporter_schema_set_ipc_enabled(struct doca_telemetry_exporter_schema *doca_schema)
Enable IPC IPC is disabled by default.
DOCA_EXPERIMENTAL void doca_telemetry_exporter_source_set_id(struct doca_telemetry_exporter_source *doca_source, const char *source_id)
Set source id.
DOCA_EXPERIMENTAL void doca_telemetry_exporter_schema_set_buf_data_root(struct doca_telemetry_exporter_schema *doca_schema, const char *path)
Set buffer data root Default path is "/opt/mellanox/doca/services/telemetry/data/".
uint8_t doca_telemetry_exporter_type_index_t
DOCA schema field type index.
DOCA_EXPERIMENTAL void doca_telemetry_exporter_field_set_array_len(struct doca_telemetry_exporter_field *field_info, uint16_t len)
Set doca telemetry field length.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_exporter_schema_add_type(struct doca_telemetry_exporter_schema *doca_schema, const char *new_type_name, struct doca_telemetry_exporter_type *type, doca_telemetry_exporter_type_index_t *type_index)
Add user-defined fields to create new type in DOCA schema. The users loses the ownership of the type ...
DOCA_EXPERIMENTAL void doca_telemetry_exporter_schema_set_ipc_reconnect_time(struct doca_telemetry_exporter_schema *doca_schema, uint32_t max_time)
Set IPC reconnect time in milliseconds Time limit for reconnect attempts. If the limit is reached,...
DOCA_EXPERIMENTAL void doca_telemetry_exporter_schema_set_buf_size(struct doca_telemetry_exporter_schema *doca_schema, uint64_t size)
Set buffer size Default value is 60000 bytes.
DOCA_EXPERIMENTAL void doca_telemetry_exporter_schema_set_opaque_events_enabled(struct doca_telemetry_exporter_schema *doca_schema)
Enable opaque events Opaque events are disabled by default.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_exporter_schema_get_ipc_socket_timeout(struct doca_telemetry_exporter_schema *doca_schema, uint32_t *timeout)
Get IPC socket timeout in milliseconds.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_exporter_source_create(struct doca_telemetry_exporter_schema *doca_schema, struct doca_telemetry_exporter_source **doca_source)
Creates a single DOCA source from schema.
DOCA_EXPERIMENTAL void doca_telemetry_exporter_schema_set_ipc_socket_timeout(struct doca_telemetry_exporter_schema *doca_schema, uint32_t timeout)
Set IPC socket timeout in milliseconds Timeout for IPC messaging socket. If timeout is reached during...
DOCA_EXPERIMENTAL void doca_telemetry_exporter_field_set_name(struct doca_telemetry_exporter_field *field_info, const char *name)
Set doca telemetry field name.
uint64_t doca_telemetry_exporter_timestamp_t
DOCA schema type index type.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_exporter_schema_get_buf_data_root(struct doca_telemetry_exporter_schema *doca_schema, const char **path)
Get data root path.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_exporter_type_create(struct doca_telemetry_exporter_type **type)
Create new telemetry type.
DOCA_EXPERIMENTAL void doca_telemetry_exporter_schema_set_file_write_max_age(struct doca_telemetry_exporter_schema *doca_schema, doca_telemetry_exporter_timestamp_t max_age)
Set file maximum age Default value is 1 hour.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_exporter_get_timestamp(doca_telemetry_exporter_timestamp_t *timestamp)
Get timestamp in the proper format.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_exporter_schema_get_ipc_sockets_dir(struct doca_telemetry_exporter_schema *doca_schema, const char **sockets_dir)
Get IPC socket directory.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_exporter_source_get_opaque_report_max_data_size(struct doca_telemetry_exporter_source *doca_source, uint32_t *max_data_size)
Get max data size for opaque report.
DOCA_EXPERIMENTAL void doca_telemetry_exporter_source_set_tag(struct doca_telemetry_exporter_source *doca_source, const char *source_tag)
Set source tag.
DOCA_EXPERIMENTAL void doca_telemetry_exporter_schema_set_ipc_sockets_dir(struct doca_telemetry_exporter_schema *doca_schema, const char *sockets_dir)
Set IPC socket directory. Default path is "/opt/mellanox/doca/services/telemetry/ipc_sockets".
DOCA_EXPERIMENTAL void doca_telemetry_exporter_schema_set_file_write_max_size(struct doca_telemetry_exporter_schema *doca_schema, size_t size)
Set file maximum size Default value is 1MB.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_exporter_field_create(struct doca_telemetry_exporter_field **field)
Create new telemetry field.
DOCA_EXPERIMENTAL void doca_telemetry_exporter_schema_set_file_write_enabled(struct doca_telemetry_exporter_schema *doca_schema)
Enable file write file write is disabled by default.
doca_telemetry_exporter_ipc_status
DOCA telemetry IPC status.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_exporter_schema_destroy(struct doca_telemetry_exporter_schema *doca_schema)
Destructor for DOCA schema.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_exporter_schema_start(struct doca_telemetry_exporter_schema *doca_schema)
Finalizes schema setup to start creating Doca Sources from the schema.
DOCA_EXPERIMENTAL void doca_telemetry_exporter_schema_set_ipc_reconnect_tries(struct doca_telemetry_exporter_schema *doca_schema, uint8_t tries)
Set maximum IPC reconnect tries. Number of reconnect attempts during reconnection period....
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_exporter_type_add_field(struct doca_telemetry_exporter_type *type, struct doca_telemetry_exporter_field *field)
Add DOCA telemetry field to type. The users loses the ownership of the field after a successful invoc...
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_exporter_schema_get_file_write_max_age(struct doca_telemetry_exporter_schema *doca_schema, doca_telemetry_exporter_timestamp_t *max_age)
Get file maximum age.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_exporter_source_start(struct doca_telemetry_exporter_source *doca_source)
Applies source attribute and starts DOCA source.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_exporter_source_report(struct doca_telemetry_exporter_source *doca_source, doca_telemetry_exporter_type_index_t index, void *data, int count)
Report events data of the same type via DOCA source.
DOCA_EXPERIMENTAL doca_error_t doca_telemetry_exporter_check_ipc_status(struct doca_telemetry_exporter_source *doca_source, doca_telemetry_exporter_ipc_status_t *status)
Return status of IPC transport.
@ DOCA_TELEMETRY_EXPORTER_IPC_STATUS_CONNECTED
@ DOCA_TELEMETRY_EXPORTER_IPC_STATUS_DISABLED
@ DOCA_TELEMETRY_EXPORTER_IPC_STATUS_FAILED
uint8_t type
Definition: packets.h:0