Mem_PoolBlkGet()

Gets a memory block from memory pool.

This function is deprecated and will be removed in a future version of this product.

Files

lib_mem.h/lib_mem.c

Prototype

          void  *Mem_PoolBlkGet (MEM_POOL    *pmem_pool,
                                 CPU_SIZE_T   size,
                                 LIB_ERR     *perr);

Arguments

pmem_pool

Pointer to memory pool to get memory block from.

size

Size of requested memory (in octets).

perr

Pointer to variable that will receive the return error code from this function:

LIB_MEM_ERR_NONE
LIB_MEM_ERR_NULL_PTR
LIB_MEM_ERR_POOL_EMPTY
LIB_MEM_ERR_INVALID_POOL
LIB_MEM_ERR_INVALID_BLK_IX
LIB_MEM_ERR_INVALID_BLK_SIZE

Returned Value

Pointer to memory block, if no errors;

Pointer to NULL, otherwise.

Required Configuration

Available only if LIB_MEM_CFG_HEAP_SIZE is > 0 in lib_cfg.h.

Notes / Warnings

None.

Example Usage

MEM_POOL     AppMemPool;
CPU_SIZE_T   octets_reqd;
void        *pmem_blk;
LIB_ERR      err;


Mem_PoolCreate((MEM_POOL       *)&AppMemPool,
               (void           *)  0,              /* Create pool from heap   ...                    */
               (CPU_SIZE_T      )  0u,
               (MEM_POOL_BLK_QTY) 10u,             /* ... with 10 blocks      ...                    */
               (CPU_SIZE_T      )100u,             /* ... of  100 octets each ...                    */
               (CPU_SIZE_T      )  4u,             /* ... and align each block to a 4-byte boundary. */
               (CPU_SIZE_T     *)&octets_reqd,
               (LIB_ERR        *)&err);

if (err != LIB_ERR_NONE) {
  printf("COULD NOT CREATE MEMORY POOL.");
  if (err == LIB_MEM_ERR_HEAP_EMPTY) {
      printf("Heap empty   ... %u more octets needed.", octets_reqd);
  }
    return;
}

                                                 /* Get an 80-byte memory block from the pool.     */
pmem_blk = Mem_PoolBlkGet(&AppMemPool, 80u, &err);
if (err != LIB_ERR_NONE) {
  printf("COULD NOT GET MEMORY BLOCK FROM MEMORY POOL.");
    return;
}