You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by xi...@apache.org on 2024/09/13 01:09:36 UTC

(nuttx) 11/13: coresight: return -EEXIST when register a device which has been registered

This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git

commit d04e1ebf4ec2805b78b10c4db5d3020f63e098e4
Author: liaoao <li...@xiaomi.com>
AuthorDate: Thu Jan 11 17:01:56 2024 +0800

    coresight: return -EEXIST when register a device which has been registered
    
    Signed-off-by: liaoao <li...@xiaomi.com>
---
 drivers/coresight/coresight_core.c | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/drivers/coresight/coresight_core.c b/drivers/coresight/coresight_core.c
index 56e056af0e..9b113123b9 100644
--- a/drivers/coresight/coresight_core.c
+++ b/drivers/coresight/coresight_core.c
@@ -661,6 +661,29 @@ err:
   return ret;
 }
 
+/****************************************************************************
+ * Name: coresight_find_dev
+ ****************************************************************************/
+
+static FAR struct coresight_dev_s *coresight_find_dev(FAR const char *name)
+{
+  FAR struct coresight_dev_s *tempdev;
+  irqstate_t flags;
+
+  flags = enter_critical_section();
+  list_for_every_entry(&g_csdev_list, tempdev, struct coresight_dev_s, node)
+    {
+      if (strcmp(tempdev->name, name) == 0)
+        {
+          leave_critical_section(flags);
+          return tempdev;
+        }
+    }
+
+  leave_critical_section(flags);
+  return NULL;
+}
+
 /****************************************************************************
  * Public Functions
  ****************************************************************************/
@@ -687,6 +710,12 @@ int coresight_register(FAR struct coresight_dev_s *csdev,
   irqstate_t flags;
   int i;
 
+  if (coresight_find_dev(desc->name) != NULL)
+    {
+      cserr("device has been registered!\n");
+      return -EEXIST;
+    }
+
   csdev->name = desc->name;
   csdev->addr = desc->addr;
   csdev->type = desc->type;