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.

Getting a Memory Block from a Partition

Application code can request a memory block from a partition by calling OSMemGet() as shown in Listing 17-3. The code assumes that the partition was already created.

 

OS_MEM MyPartition; (1)

CPU_INT08U *MyDataBlkPtr;

 

 

void MyTask (void *p_arg)

{

OS_ERR err;

:

while (DEF_ON) {

:

MyDataBlkPtr = (CPU_INT08U *)OSMemGet((OS_MEM *)&MyPartition, (2)

(OS_ERR *)&err);

if (err == OS_ERR_NONE) { (3)

/* You have a memory block from the partition */

}

:

:

}

}

    1. Obtaining a memory block from a partition
      1. The memory partition control block must be accessible by all tasks or ISRs that will be using the partition.
      2. Simply call OSMemGet() to obtain a memory block from the desired partition. A pointer to the allocated memory block is returned. This is similar to malloc(), except that the memory block comes from a pool that is guaranteed to not fragment. Also, it’s assumed that your application knows the size of each block so it doesn’t overflow the block with data.
      3. It is important to examine the returned error code to ensure that there are free memory blocks and that the application can start putting content in the memory blocks.
  • No labels