Add zxdh logging implementation.<br /> <br />Signed-off-by: Hanxiao Li <li.hanxiao@zte.com.cn> <br />---<br /> drivers/common/zsda/meson.build   |  1 +<br /> drivers/common/zsda/zsda_device.c | 23 ++++++++++++++++-------<br /> drivers/common/zsda/zsda_logs.c   | 19 +++++++++++++++++++<br /> drivers/common/zsda/zsda_logs.h   | 27 +++++++++++++++++++++++++++<br /> 4 files changed, 63 insertions(+), 7 deletions(-)<br /> create mode 100644 drivers/common/zsda/zsda_logs.c<br /> create mode 100644 drivers/common/zsda/zsda_logs.h<br /> <br />diff --git a/drivers/common/zsda/meson.build b/drivers/common/zsda/meson.build<br />index 68bc549c27..342d000c6d 100644<br />--- a/drivers/common/zsda/meson.build<br />+++ b/drivers/common/zsda/meson.build<br />@@ -10,4 +10,5 @@ endif<br /> deps += ['bus_pci', 'mbuf']<br /> sources += files(<br />         'zsda_device.c',<br />+        'zsda_logs.c',<br />         )<br />diff --git a/drivers/common/zsda/zsda_device.c b/drivers/common/zsda/zsda_device.c<br />index 8d691b3bb8..1be3ea8016 100644<br />--- a/drivers/common/zsda/zsda_device.c<br />+++ b/drivers/common/zsda/zsda_device.c<br />@@ -9,6 +9,7 @@<br /> #include <rte_bus_pci.h> <br />  <br /> #include "zsda_device.h" <br />+#include "zsda_logs.h" <br />  <br /> /* per-process array of device data */<br /> struct zsda_device_info zsda_devs[RTE_PMD_ZSDA_MAX_PCI_DEVICES];<br />@@ -32,9 +33,10 @@ zsda_pci_get_named_dev(const char *name)<br /> {<br />     unsigned int i;<br />  <br />-    if (name == NULL)<br />+    if (name == NULL) {<br />+        ZSDA_LOG(ERR, "Failed! name is NULL.");<br />         return NULL;<br />-<br />+    }<br />     for (i = 0; i < RTE_PMD_ZSDA_MAX_PCI_DEVICES; i++) {<br />         if (zsda_devs[i].mz && <br />             (strcmp(((struct zsda_pci_device *)zsda_devs[i].mz->addr)<br />@@ -81,8 +83,10 @@ zsda_pci_device_allocate(struct rte_pci_device *pci_dev)<br />     if (rte_eal_process_type() == RTE_PROC_SECONDARY) {<br />         const struct rte_memzone *mz = rte_memzone_lookup(name);<br />  <br />-        if (mz == NULL)<br />+        if (mz == NULL) {<br />+            ZSDA_LOG(ERR, "Secondary can't find %s mz", name);<br />             return NULL;<br />+        }<br />         zsda_pci_dev = mz->addr;<br />         zsda_devs[zsda_pci_dev->zsda_dev_id].mz = mz;<br />         zsda_devs[zsda_pci_dev->zsda_dev_id].pci_dev = pci_dev;<br />@@ -90,8 +94,10 @@ zsda_pci_device_allocate(struct rte_pci_device *pci_dev)<br />         return zsda_pci_dev;<br />     }<br />  <br />-    if (zsda_pci_get_named_dev(name) != NULL)<br />+    if (zsda_pci_get_named_dev(name) != NULL) {<br />+        ZSDA_LOG(ERR, "Failed! config");<br />         return NULL;<br />+    }<br />  <br />     zsda_dev_id = zsda_pci_find_free_device_index();<br />  <br />@@ -102,9 +108,10 @@ zsda_pci_device_allocate(struct rte_pci_device *pci_dev)<br />         rte_memzone_reserve(name, sizeof(struct zsda_pci_device),<br />                     (int)(socket_id & 0xfff), 0);<br />  <br />-    if (zsda_devs[zsda_dev_id].mz == NULL)<br />+    if (zsda_devs[zsda_dev_id].mz == NULL) {<br />+        ZSDA_LOG(ERR, "Failed! malloc");<br />         return NULL;<br />-<br />+    }<br />     zsda_pci_dev = zsda_devs[zsda_dev_id].mz->addr;<br />     memset(zsda_pci_dev, 0, sizeof(*zsda_pci_dev));<br />     memcpy(zsda_pci_dev->name, name, ZSDA_DEV_NAME_MAX_LEN);<br />@@ -158,8 +165,10 @@ zsda_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,<br />     struct zsda_pci_device *zsda_pci_dev;<br />  <br />     zsda_pci_dev = zsda_pci_device_allocate(pci_dev);<br />-    if (zsda_pci_dev == NULL)<br />+    if (zsda_pci_dev == NULL) {<br />+        ZSDA_LOG(ERR, "Failed! zsda_pci_dev is NULL");<br />         return -ENODEV;<br />+    }<br />  <br />     return ret;<br /> }<br />diff --git a/drivers/common/zsda/zsda_logs.c b/drivers/common/zsda/zsda_logs.c<br />new file mode 100644<br />index 0000000000..f76d9d9d0d<br />--- /dev/null<br />+++ b/drivers/common/zsda/zsda_logs.c<br />@@ -0,0 +1,19 @@<br />+/* SPDX-License-Identifier: BSD-3-Clause<br />+ * Copyright(c) 2024 ZTE Corporation<br />+ */<br />+<br />+#include <rte_hexdump.h> <br />+<br />+#include "zsda_logs.h" <br />+<br />+int<br />+zsda_hexdump_log(uint32_t level, uint32_t logtype, const char *title,<br />+        const void *buf, unsigned int len)<br />+{<br />+    if (rte_log_can_log(logtype, level))<br />+        rte_hexdump(rte_log_get_stream(), title, buf, len);<br />+<br />+    return 0;<br />+}<br />+<br />+RTE_LOG_REGISTER_SUFFIX(zsda_logtype_gen, gen, NOTICE);<br />diff --git a/drivers/common/zsda/zsda_logs.h b/drivers/common/zsda/zsda_logs.h<br />new file mode 100644<br />index 0000000000..9d77254773<br />--- /dev/null<br />+++ b/drivers/common/zsda/zsda_logs.h<br />@@ -0,0 +1,27 @@<br />+/* SPDX-License-Identifier: BSD-3-Clause<br />+ * Copyright(c) 2024 ZTE Corporation<br />+ */<br />+<br />+#ifndef _ZSDA_LOGS_H_<br />+#define _ZSDA_LOGS_H_<br />+<br />+#include <rte_log.h> <br />+<br />+extern int zsda_logtype_gen;<br />+#define RTE_LOGTYPE_ZSDA_GEN zsda_logtype_gen<br />+<br />+#define ZSDA_LOG(level, ...)             \<br />+    RTE_LOG_LINE_PREFIX(level, ZSDA_GEN, "%s(): ", \<br />+        __func__, __VA_ARGS__)<br />+<br />+/**<br />+ * zsda_hexdump_log - Dump out memory in a special hex dump format.<br />+ *<br />+ * Dump out the message buffer in a special hex dump output format with<br />+ * characters printed for each line of 16 hex values. The message will be sent<br />+ * to the stream used by the rte_log infrastructure.<br />+ */<br />+int zsda_hexdump_log(uint32_t level, uint32_t logtype, const char *title,<br />+             const void *buf, unsigned int len);<br />+<br />+#endif /* _ZSDA_LOGS_H_ */<br />--  <br />2.27.0<br />