...
Description
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. Anchor
Files
os.h/os_mem.c
Prototype
Code Block |
---|
void *OSMemGet (OS_MEM *p_mem,
OS_ERR *p_err) |
Arguments
p_mem
is a pointer to the desired memory partition control block.
Anchor
p_err
is a pointer to a variable that holds an error code:
...
...
OS_ERR_NONE
...
class | WebWorks_Indent_2 |
---|
...
If a memory block is available and returned to the application.
...
...
class | WebWorks_Indent_1 |
---|
...
OS_ERR_MEM_INVALID_P_MEM
...
class | WebWorks_Indent_2 |
---|
...
If OS_CFG_ARG_CHK_EN
is set to
...
DEF_ENABLED
in os_cfg.h
: if p_mem
is a NULL
pointer.
...
class | WebWorks_Indent_1 |
---|
...
OS_ERR_MEM_NO_FREE_BLKS
...
class | WebWorks_Indent_2 |
---|
...
If the memory partition does not contain additional memory blocks to allocate.
...
OS_ERR_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
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 *
. Anchor
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
...
- Memory partitions must be created before they are used.
...
...
rowspan | 14 |
---|
...
Example Usage
Code Block | ||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||
OS_MEM CommMem; void Task (void *p_arg) { OS_ERR err; CPU_INT32U *p_msg; (void)&p_arg; Anchor | | 1050865 | 1050865 | while|||||||||||||||||||||||||||||||||
Anchor | 1050866 | 1050866 | ||||||||||||||||||||||||||||||||||
Anchor | 1050867 | 1050867 | &err);||||||||||||||||||||||||||||||||||
Anchor | 1050868 | 1050868 | /* Check “err” */||||||||||||||||||||||||||||||||||
Anchor | 1050869 | 1050869 | :||||||||||||||||||||||||||||||||||
Anchor | 1050870 | 1050870 | :||||||||||||||||||||||||||||||||||
Anchor | 1050871 | 1050871 | }||||||||||||||||||||||||||||||||||
Anchor | 1050872 | 1050872 | }||||||||||||||||||||||||||||||||||
Table Row (tr) | ||||||||||||||||||||||||||||||||||||
Table Row (tr) | ||||||||||||||||||||||||||||||||||||
Table Row (tr) | ||||||||||||||||||||||||||||||||||||
Table Row (tr) | ||||||||||||||||||||||||||||||||||||
Table Row (tr) | ||||||||||||||||||||||||||||||||||||
Table Row (tr) | ||||||||||||||||||||||||||||||||||||
Table Row (tr) | ||||||||||||||||||||||||||||||||||||
Table Row (tr) | ||||||||||||||||||||||||||||||||||||
Table Row (tr) | ||||||||||||||||||||||||||||||||||||
Table Row (tr) | ||||||||||||||||||||||||||||||||||||
Table Row (tr) | ||||||||||||||||||||||||||||||||||||
Table Row (tr) |