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 2022/07/26 01:36:13 UTC

[incubator-nuttx] 01/03: rptun_dump: don't get lock in IRQ handler

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/incubator-nuttx.git

commit 631eb516c90504e1f96287feb9ac302e811e7682
Author: ligd <li...@xiaomi.com>
AuthorDate: Sun Apr 24 15:25:13 2022 +0800

    rptun_dump: don't get lock in IRQ handler
    
    Signed-off-by: ligd <li...@xiaomi.com>
---
 drivers/rptun/rptun_dump.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/rptun/rptun_dump.c b/drivers/rptun/rptun_dump.c
index cb041cf70e..84eb64d2ac 100644
--- a/drivers/rptun/rptun_dump.c
+++ b/drivers/rptun/rptun_dump.c
@@ -100,7 +100,10 @@ void rptun_dump(FAR struct rpmsg_virtio_device *rvdev)
       return;
     }
 
-  metal_mutex_acquire(&rdev->lock);
+  if (!up_interrupt_context() && !sched_idletask())
+    {
+      metal_mutex_acquire(&rdev->lock);
+    }
 
   metal_log(METAL_LOG_INFO,
             "Dump rpmsg info between cpu %s <==> %s:\n",
@@ -119,5 +122,8 @@ void rptun_dump(FAR struct rpmsg_virtio_device *rvdev)
   rptun_dump_buffer(rvdev, true);
   rptun_dump_buffer(rvdev, false);
 
-  metal_mutex_release(&rdev->lock);
+  if (!up_interrupt_context() && !sched_idletask())
+    {
+      metal_mutex_release(&rdev->lock);
+    }
 }