Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Description

Returns a memory block back to a memory partition. It is assumed that the user will return the memory block to the same memory partition from which it was allocated.

Files

os.h/os_mem.c

Prototype


Code Block
void  OSMemPut (OS_MEM  *p_mem,

...


                void    *p_blk,

...


                OS_ERR  *p_err)

...

File

Called from

Code enabled by

os_mem.c

Task or ISR

OS_CFG_MEM_EN

...

Arguments

p_mem

is a pointer to the memory partition control block.

...

is a pointer to a variable that holds an error code:

OS_ERR_NONE

if If a memory block is available and returned to the application.

OS_ERR_MEM_FULL

If returning a memory block to an already full memory partition. This would indicate that the user freed more blocks that were allocated and potentially did not return some of the memory blocks to the proper memory partition.

OS_ERR_MEM_INVALID_P_BLK

if If OS_CFG_ARG_CHK_EN is set to 1 in DEF_ENABLED in os_cfg.h: if the user passed a NULL pointer for the memory block being returned to the memory partition.

OS_ERR_MEM_INVALID_P_MEM

if If OS_CFG_ARG_CHK_EN is set to 1 in DEF_ENABLED in os_cfg.h: if p_mem is a NULL pointer.

OS_ERR_MEM_MEM_FULL

...

_OBJ_TYPE

If OS_CFG_OBJ_TYPE_CHK_EN is set to DEF_ENABLED in os_cfg.h: if the user did not pass a pointer to a memory partition.

Returned Value

None

Required Configuration

OS_CFG_MEM_EN must be enabled in os_cfg.h. Refer to µC-OS-III Configuration Manual.

Callers

Application and ISRs.

Notes/Warnings

  1. Memory partitions must be created before they are used.
  2. You must return a memory block to the proper memory partition.

...

Example Usage

Code Block
titleOSMemPut() example usage
          OS_MEM       CommMem;
          CPU_INT32U  *CommMsg;
           
           
          void Task (void *p_arg)
          {
              OS_ERR err;
           
           
              (void)&p_arg;
              while (DEF_ON) {
                  OSMemPut(&CommMem,
                           (void *)CommMsg,
                           &err);
                  /* Check "err" */
                  :
                  :
              }
          }