From bd309731da8a382a207b42d040b01abdaedcc6ff Mon Sep 17 00:00:00 2001 From: Tian Hao Date: Wed, 7 Jun 2017 14:58:17 +0800 Subject: [PATCH] component/bt : fix bug of task schedule delayed. 1. BLE RX test mode require quick task reaction, so allow higher priority task schedule from ISR. 2. Maybe other scenario also require this. --- components/bt/bt.c | 7 +++++++ components/bt/lib | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/components/bt/bt.c b/components/bt/bt.c index 34b29b9c0..bf933af08 100644 --- a/components/bt/bt.c +++ b/components/bt/bt.c @@ -75,6 +75,7 @@ struct osi_funcs_t { void (*_interrupt_disable)(void); void (*_interrupt_restore)(void); void (*_task_yield)(void); + void (*_task_yield_from_isr)(void); void *(*_semphr_create)(uint32_t max, uint32_t init); int32_t (*_semphr_give_from_isr)(void *semphr, void *hptw); int32_t (*_semphr_take)(void *semphr, uint32_t block_time_ms); @@ -104,6 +105,11 @@ static void IRAM_ATTR interrupt_restore(void) portEXIT_CRITICAL(&global_int_mux); } +static void IRAM_ATTR task_yield_from_isr(void) +{ + portYIELD_FROM_ISR(); +} + static void *IRAM_ATTR semphr_create_wrapper(uint32_t max, uint32_t init) { return (void *)xSemaphoreCreateCounting(max, init); @@ -155,6 +161,7 @@ static struct osi_funcs_t osi_funcs = { ._interrupt_disable = interrupt_disable, ._interrupt_restore = interrupt_restore, ._task_yield = vPortYield, + ._task_yield_from_isr = task_yield_from_isr, ._semphr_create = semphr_create_wrapper, ._semphr_give_from_isr = semphr_give_from_isr_wrapper, ._semphr_take = semphr_take_wrapper, diff --git a/components/bt/lib b/components/bt/lib index 8f6c2c548..e1f7dbc3b 160000 --- a/components/bt/lib +++ b/components/bt/lib @@ -1 +1 @@ -Subproject commit 8f6c2c5481d30342be8f69067a68ca7344d7b0c3 +Subproject commit e1f7dbc3bd717e142ca6c717b82a7a813c1e36f4