FreeRTOS Support Archive
The FreeRTOS support forum is used to obtain active support directly from Real
Time Engineers Ltd. In return for using our top quality software and services for
free, we request you play fair and do your bit to help others too! Sign up
to receive notifications of new support topics then help where you can.
This is a read only archive of threads posted to the FreeRTOS support forum.
The archive is updated every week, so will not always contain the very latest posts.
Use these archive pages to search previous posts. Use the Live FreeRTOS Forum
link to reply to a post, or start a new support thread.
[FreeRTOS Home] [Live FreeRTOS Forum] [FAQ] [Archive Top] [January 2017 Threads]
Hello,
can anybody explain why exactly vTaskSuspendAll() is used in every pvPortMalloc() functions of differnt heap implementations ?
Thanks
Kiran
It creates a form of critical section without blocking interrupts for an possibly semi-long and inderterminate time period. My understanding is that RTE felt that malloc took too long to disable interrupts for its duration (so you don't want to use the critical section macros that disable interrupts), but a semaphore/mutex lock had more overhead then they wanted to use also. vTaskSuspendAll allows interrupt to occur and possibly queue up new tasks to switch to, and that action is delayed until the vTaskResumeAll call. This method is used in FreeRTOS whenever there is the need of a exclusion zone that has to scan a possibly unbounded list (so the time is possibly unbounded) to minimize interrrupt latency.
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.