Do not use FreeRTOS functions as long as the scheduler is not started
Otherwise interrupts with a logical priority lower than configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY are masked after the first call to xTaskResumeAll() (after the first critical section is entered, and never released).
This commit is contained in:
committed by
Peter Feerick
parent
520eac3e4f
commit
d77ff2f4e9
@@ -74,6 +74,10 @@ to exclude the API function. */
|
||||
#define INCLUDE_vTaskDelayUntil 1
|
||||
#define INCLUDE_vTaskDelay 1
|
||||
|
||||
#if defined(THREADSAFE_MALLOC)
|
||||
#define INCLUDE_xTaskGetSchedulerState 1
|
||||
#endif
|
||||
|
||||
/* Cortex-M specific definitions. */
|
||||
#ifdef __NVIC_PRIO_BITS
|
||||
/* __BVIC_PRIO_BITS will be specified when CMSIS is being used. */
|
||||
|
||||
@@ -53,13 +53,15 @@ extern caddr_t _sbrk(int nbytes)
|
||||
void __malloc_lock(struct _reent *r)
|
||||
{
|
||||
(void)(r);
|
||||
vTaskSuspendAll();
|
||||
if (xTaskGetSchedulerState() != taskSCHEDULER_NOT_STARTED)
|
||||
vTaskSuspendAll();
|
||||
};
|
||||
|
||||
void __malloc_unlock(struct _reent *r)
|
||||
{
|
||||
(void)(r);
|
||||
(void)xTaskResumeAll();
|
||||
if (xTaskGetSchedulerState() != taskSCHEDULER_NOT_STARTED)
|
||||
(void)xTaskResumeAll();
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user