From 04cdbc647c28b04d21ddb50fe80210dec30b5927 Mon Sep 17 00:00:00 2001 From: GuEe-GUI <2991707448@qq.com> Date: Wed, 11 Sep 2024 12:56:28 +0800 Subject: [PATCH] [FIXUP/PIC] pirq's child handler should lock less When call the child handler, the PIC ops needn't lock again. Critical zone protection by PIC implementers. Signed-off-by: GuEe-GUI <2991707448@qq.com> --- components/drivers/pic/pic.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/components/drivers/pic/pic.c b/components/drivers/pic/pic.c index 5cd2ece005..8893f974c2 100644 --- a/components/drivers/pic/pic.c +++ b/components/drivers/pic/pic.c @@ -548,11 +548,17 @@ rt_err_t rt_pic_handle_isr(struct rt_pic_irq *pirq) rt_list_for_each_entry(child, &pirq->children_nodes, list) { - rt_pic_irq_ack(child->irq); + if (child->pic->ops->irq_ack) + { + child->pic->ops->irq_ack(child); + } err = rt_pic_handle_isr(child); - rt_pic_irq_eoi(child->irq); + if (child->pic->ops->irq_eoi) + { + child->pic->ops->irq_eoi(child); + } } }