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:
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” */ : : } } |