summaryrefslogtreecommitdiffstats
path: root/util/utils.h
diff options
context:
space:
mode:
Diffstat (limited to 'util/utils.h')
-rw-r--r--util/utils.h150
1 files changed, 150 insertions, 0 deletions
diff --git a/util/utils.h b/util/utils.h
new file mode 100644
index 0000000..35ba550
--- /dev/null
+++ b/util/utils.h
@@ -0,0 +1,150 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (c) Micron, Inc 2024.
+ *
+ * @file: utils.h
+ * @brief: This module contains all the utilities needed for other modules.
+ * @author: Chaithanya Shoba <ashoba@micron.com>
+ */
+
+#include "common.h"
+#include "nvme-print.h"
+
+/*Request data format*/
+struct __packed request_data {
+ char *field;
+ int size;
+ int size2;
+};
+
+enum field_size {
+ FIELD_SIZE_16 = 16,
+ FIELD_SIZE_8 = 8,
+ FIELD_SIZE_7 = 7,
+ FIELD_SIZE_6 = 6,
+ FIELD_SIZE_4 = 4,
+ FIELD_SIZE_3 = 3,
+ FIELD_SIZE_2 = 2,
+ FIELD_SIZE_1 = 1
+};
+
+/**
+ * @brief converts a single hexadecimal character to its integer value.
+ *
+ * @param hex_char, input hex char
+ * @param ts_buf, output time string
+ *
+ * @return integer value of hexadecimal
+ */
+int hex_to_int(char c);
+
+/**
+ * @brief convert time_t format time to a human readable string
+ *
+ * @param hex_string, input hex string pointer
+ * @param ascii_buffer, output ascii buffer pointer
+ *
+ * @return nothing
+ */
+char *hex_to_ascii(const char *hex);
+
+/**
+ * @brief convert time_t format time to a human readable string
+ *
+ * @param data_dir_path, input data directory path pointer
+ * @param bin_path, input binary file path pointer
+ * @param buffer_size, input buffer size pointer
+ * @param retry_count, input retry count
+ *
+ * @return pointer to binary data buffer
+ */
+unsigned char *read_binary_file(char *data_dir_path, const char *bin_path, long *buffer_size,
+ int retry_count);
+
+/**
+ * @brief prints generic structure parser
+ *
+ * @param buf, input raw log data
+ * @param log_page, input format of the data
+ * @param field_count, intput log field count
+ * @param stats, input json object to add fields
+ * @param spec, input ocp spec index
+ * @param fp, input file pointer
+ *
+ * @return 0 success
+ */
+void generic_structure_parser(__u8 *buf, struct request_data *req_data, int field_count,
+ struct json_object *stats, __u8 spec, FILE *fp);
+
+/**
+ * @brief prints raw data to the buffer
+ *
+ * @param msg, intput buffer to write data
+ * @param pdata, input raw data
+ * @param data_size, input size of the data
+ * @param fp, input file pointer
+ *
+ * @return 0 success
+ */
+void print_formatted_var_size_str(const char *msg, const __u8 *pdata, size_t data_size, FILE *fp);
+
+/**
+ * @brief prints raw data to the buffer
+ *
+ * @param offset, intput offset of the param
+ * @param sfield, intput field
+ * @param buf, input raw data
+ * @param datastr, output data buffer
+ *
+ * @return 0 success
+ */
+void process_field_size_16(int offset, char *sfield, __u8 *buf, char *datastr);
+
+/**
+ * @brief prints raw data to the buffer
+ *
+ * @param offset, intput offset of the param
+ * @param sfield, intput field
+ * @param buf, input raw data
+ * @param datastr, output data buffer
+ *
+ * @return 0 success
+ */
+void process_field_size_8(int offset, char *sfield, __u8 *buf, char *datastr);
+
+/**
+ * @brief prints raw data to the buffer
+ *
+ * @param offset, intput offset of the param
+ * @param sfield, intput field
+ * @param buf, input raw data
+ * @param datastr, output data buffer
+ *
+ * @return 0 success
+ */
+void process_field_size_7(int offset, char *sfield, __u8 *buf, char *datastr);
+
+/**
+ * @brief prints raw data to the buffer
+ *
+ * @param offset, intput offset of the param
+ * @param sfield, intput field
+ * @param buf, input raw data
+ * @param datastr, output data buffer
+ *
+ * @return 0 success
+ */
+void process_field_size_6(int offset, char *sfield, __u8 *buf, char *datastr);
+
+/**
+ * @brief prints raw data to the buffer
+ *
+ * @param offset, intput offset of the param
+ * @param sfield, intput field
+ * @param buf, input raw data
+ * @param size, input data size
+ * @param datastr, output data buffer
+ *
+ * @return 0 success
+ */
+void process_field_size_default(int offset, char *sfield, __u8 *buf, int size, char *datastr);