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);
+ }
}