summaryrefslogtreecommitdiff
path: root/components/drivers
diff options
context:
space:
mode:
authorzhujiale <[email protected]>2024-09-13 18:01:40 +0800
committerRbb666 <[email protected]>2024-09-24 09:56:30 +0800
commitd0379529886829039b999107db71b3bc3257ca7b (patch)
tree5c260ccfc65d517396b2622b21696cf35b07066c /components/drivers
parentd8956e415e246423abd71917aea8ecb4f8fd2a47 (diff)
smp
Diffstat (limited to 'components/drivers')
-rw-r--r--components/drivers/smp/smp.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/components/drivers/smp/smp.c b/components/drivers/smp/smp.c
index 765d143061..aa0071c576 100644
--- a/components/drivers/smp/smp.c
+++ b/components/drivers/smp/smp.c
@@ -71,6 +71,7 @@ void rt_smp_call_func_cond(int cpu_mask, rt_smp_call_func_back func, void *data,
int cpuid = 1 << cur_cpu;
int tmp_id = 0, cpu_nr = 0;
int tmp_mask;
+ int irq_flag;
if (flag == SMP_CALL_WAIT_ALL)
{
@@ -101,9 +102,9 @@ void rt_smp_call_func_cond(int cpu_mask, rt_smp_call_func_back func, void *data,
event.func = func;
event.data = data;
event.cpu_mask = cpu_mask;
- rt_spin_lock(&rt_smp_work[tmp_id].lock);
+ irq_flag = rt_spin_lock_irqsave(&rt_smp_work[tmp_id].lock);
rt_smp_work[tmp_id].event = event;
- rt_spin_unlock(&rt_smp_work[tmp_id].lock);
+ rt_spin_unlock_irqrestore(&rt_smp_work[tmp_id].lock,irq_flag);
}
tmp_id++;
tmp_mask = tmp_mask >> 1;