diff options
-rw-r--r-- | core/riscv-rv32i/task.c | 6 | ||||
-rw-r--r-- | include/task.h | 5 |
2 files changed, 11 insertions, 0 deletions
diff --git a/core/riscv-rv32i/task.c b/core/riscv-rv32i/task.c index cf734d4078..4bd2c44a03 100644 --- a/core/riscv-rv32i/task.c +++ b/core/riscv-rv32i/task.c @@ -204,6 +204,12 @@ inline int in_interrupt_context(void) return in_interrupt; } +int in_soft_interrupt_context(void) +{ + /* group 16 is reserved for soft-irq */ + return in_interrupt_context() && ec_int_group == 16; +} + task_id_t __ram_code task_get_current(void) { #ifdef CONFIG_DEBUG_BRINGUP diff --git a/include/task.h b/include/task.h index c0ce1e6838..7d424b871c 100644 --- a/include/task.h +++ b/include/task.h @@ -81,6 +81,11 @@ void interrupt_enable(void); int in_interrupt_context(void); /** + * Return true if we are in software interrupt context. + */ +int in_soft_interrupt_context(void); + +/** * Return current interrupt mask. Meaning is chip-specific and * should not be examined; just pass it to set_int_mask() to * restore a previous interrupt state after interrupt_disable(). |