diff options
| author | zhujiale <[email protected]> | 2024-09-13 18:01:40 +0800 |
|---|---|---|
| committer | Rbb666 <[email protected]> | 2024-09-24 09:56:30 +0800 |
| commit | d0379529886829039b999107db71b3bc3257ca7b (patch) | |
| tree | 5c260ccfc65d517396b2622b21696cf35b07066c /components/drivers | |
| parent | d8956e415e246423abd71917aea8ecb4f8fd2a47 (diff) | |
smp
Diffstat (limited to 'components/drivers')
| -rw-r--r-- | components/drivers/smp/smp.c | 5 |
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; |
