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/05/09 05:45:10 UTC
(nuttx) 02/04: sched: we use spin_lock_irqsave replace enter_critical_section to protect g_irqvector
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 2ee8aa6f2b4ae5384f7dc984f467702d5f3fbf40
Author: hujun5 <hu...@xiaomi.com>
AuthorDate: Thu Jan 11 11:27:31 2024 +0800
sched: we use spin_lock_irqsave replace enter_critical_section to protect g_irqvector
enter_critical_section may be called before os initialized
Signed-off-by: hujun5 <hu...@xiaomi.com>
---
sched/irq/irq_attach.c | 4 ++--
sched/irq/irq_chain.c | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/sched/irq/irq_attach.c b/sched/irq/irq_attach.c
index 0ca62f0238..83249c4a2e 100644
--- a/sched/irq/irq_attach.c
+++ b/sched/irq/irq_attach.c
@@ -72,7 +72,7 @@ int irq_attach(int irq, xcpt_t isr, FAR void *arg)
* to the unexpected interrupt handler.
*/
- flags = enter_critical_section();
+ flags = spin_lock_irqsave(NULL);
if (isr == NULL)
{
/* Disable the interrupt if we can before detaching it. We might
@@ -121,7 +121,7 @@ int irq_attach(int irq, xcpt_t isr, FAR void *arg)
g_irqvector[ndx].count = 0;
#endif
- leave_critical_section(flags);
+ spin_unlock_irqrestore(NULL, flags);
ret = OK;
}
diff --git a/sched/irq/irq_chain.c b/sched/irq/irq_chain.c
index ba83b0befa..f5bd0736c9 100644
--- a/sched/irq/irq_chain.c
+++ b/sched/irq/irq_chain.c
@@ -218,7 +218,7 @@ int irqchain_detach(int irq, xcpt_t isr, FAR void *arg)
ndx = irq;
#endif
- flags = enter_critical_section();
+ flags = spin_lock_irqsave(NULL);
if (g_irqvector[ndx].handler == irqchain_dispatch)
{
@@ -264,7 +264,7 @@ int irqchain_detach(int irq, xcpt_t isr, FAR void *arg)
ret = irq_detach(irq);
}
- leave_critical_section(flags);
+ spin_unlock_irqrestore(NULL, flags);
}
return ret;