diff options
| author | Shell <[email protected]> | 2024-01-09 23:09:49 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2024-01-09 23:09:49 +0800 |
| commit | cc157baf23b3757b1741ca06da4bad45b5ff8ddc (patch) | |
| tree | 70f9e8e36b4d9eb988978eb0fb8ff1113add269a /src/irq.c | |
| parent | acaa23052f2d24de5cc5c389014ed8a8513e7311 (diff) | |
[kernel] fixup of data racing accessing percpu objects (#8475)
Signed-off-by: Shell <[email protected]>
Diffstat (limited to 'src/irq.c')
| -rw-r--r-- | src/irq.c | 9 |
1 files changed, 8 insertions, 1 deletions
@@ -13,6 +13,7 @@ * 2022-01-07 Gabriel Moving __on_rt_xxxxx_hook to irq.c * 2022-07-04 Yunjie fix RT_DEBUG_LOG * 2023-09-15 xqyjlj perf rt_hw_interrupt_disable/enable + * 2024-01-05 Shell Fixup of data racing in rt_interrupt_get_nest */ #include <rthw.h> @@ -114,7 +115,13 @@ RTM_EXPORT(rt_interrupt_leave); */ rt_weak rt_uint8_t rt_interrupt_get_nest(void) { - return rt_atomic_load(&rt_interrupt_nest); + rt_uint8_t ret; + rt_base_t level; + + level = rt_hw_local_irq_disable(); + ret = rt_atomic_load(&rt_interrupt_nest); + rt_hw_local_irq_enable(level); + return ret; } RTM_EXPORT(rt_interrupt_get_nest); |
