Memory manager for IAR, KEIL and others …

This memory manager can reuse standard C-lib functions. Sometimes the malloc, realloc and free could be optimized more precise in C lib than those proposed in RTOS.. FreeRTOSSourceportableMemMangHeapClib.c:
#include <stdlib.h>
#include "FreeRTOS.h"
#include "task.h"
void vPortFree( void *pv )
{
  if(pv)
  {
    vTaskSuspendAll();
    free(pv);
    xTaskResumeAll();
  }
}
void *pvPortMalloc(size_t xWantedSize)
{
void *Mem;
    vTaskSuspendAll();
    Mem = malloc(xWantedSize);
    xTaskResumeAll();
return (Mem);
}

Memory manager for IAR, KEIL and others …

What is the difference between this and heap_3.c? Heap_4.c is currently the preferred scheme if RAM is going to be freed as well as allocated. Regards.

Memory manager for IAR, KEIL and others …

Sorry, I overlook that. Anyway, this memory scheme performs a little better in Keil. You can use safelly malloc and free inside your code and everything is synchronized. Keil can use in its C-lib externally provided mutex.
void vPortFree( void *pv )
 { 
   free(pv); 
}
 void *pvPortMalloc(size_t xWantedSize)
 {
   return malloc(xWantedSize); 
}
/*--------------------------- _mutex_initialize -----------------------------*/
int _mutex_initialize (_SYNC_t *mutex) 
{
  /* Allocate and initialize a system mutex. */
  vSemaphoreCreateBinary(*mutex);       /*Create semaphore*/
  return (1);
}
/*--------------------------- _mutex_acquire --------------------------------*/
__attribute__((used)) void _mutex_acquire(_SYNC_t *mutex)
{
  /* Acquire a system mutex, lock stdlib resources. */
  if(RTOS_STATE == RTOS_RUNNING)
  {    /* RTX running, acquire a mutex. */
    xSemaphoreTake(*mutex, 500);
  }  
}
/*--------------------------- _mutex_release --------------------------------*/
__attribute__((used)) void _mutex_release (_SYNC_t *mutex) 
{
  /* Release a system mutex, unlock stdlib resources. */
  if(RTOS_STATE == RTOS_RUNNING) 
  {  /* RTX runnning, release a mutex. */
    xSemaphoreGive(*mutex);    
  }
}
//http://www.keil.com/forum/16315/