Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Unable to render {include} The included page could not be found.
Unable to render {include} The included page could not be found.

OSMemGet()

void *OSMemGet (OS_MEM *p_mem,

OS_ERR *p_err)

 

File

Called from

Code enabled by

os_mem.c

Task or ISR

OS_CFG_MEM_EN

OSMemGet() obtains a memory block from a memory partition. It is assumed that the application knows the size of each memory block obtained. Also, the application must return the memory block [using OSMemPut()] to the same memory partition when it no longer requires it. OSMemGet() may be called more than once until all memory blocks are allocated.

Arguments

p_mem

is a pointer to the desired memory partition control block.

p_err

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

OS_ERR_NONE
if a memory block is available and returned to the application.
OS_ERR_MEM_INVALID_P_MEM
if OS_CFG_ARG_CHK_EN is set to 1 in os_cfg.h: if p_mem is a NULL pointer.
OS_ERR_MEM_NO_FREE_BLKS
if the memory partition does not contain additional memory blocks to allocate.

Returned Value

OSMemGet() returns a pointer to the allocated memory block if one is available. If a memory block is not available from the memory partition, OSMemGet() returns a NULL pointer. It is up to the application to “cast” the pointer to the proper data type since OSMemGet() returns a void *.

Notes/Warnings

Memory partitions must be created before they are used.

This is a non-blocking call and this function can be called from an ISR.

Example

 

OS_MEM CommMem;

 

 

void Task (void *p_arg)

{

OS_ERR err;

CPU_INT32U *p_msg;

 

 

(void)&p_arg;

while (DEF_ON) {

p_msg = (CPU_INT32U *)OSMemGet(&CommMem,

&err);

/* Check “err” */

:

:

}

}

  • No labels