Mem_SegGetSizeRem()

Gets a memory pool’s remaining segment size available to allocate.

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

Files

lib_mem.h/lib_mem.c

Prototype

          CPU_SIZE_T  Mem_SegGetSizeRem (MEM_POOL    *pmem_pool,
                                         CPU_SIZE_T   align,
                                         LIB_ERR     *perr);

Arguments

pmem_pool

Pointer to a memory pool structure.

align

Desired word boundary alignment (in octets) to return remaining memory size from.

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_INVALID_POOL
LIB_MEM_ERR_INVALID_MEM_ALIGN

Returned Value

Remaining memory segment size (in octets), if no errors;

0, otherwise.

Required Configuration

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

Notes / Warnings

Remaining size of memory segments returned from either memory segment’s configured dedicated memory, if any, or heap memory pool, otherwise.

Example Usage

MEM_POOL    AppMemPoolFromHeap;
MEM_POOL    AppMemPoolFromUserMemSeg;
CPU_SIZE_T  octets_reqd;
CPU_SIZE_T  size_rem;
LIB_ERR     err;
 
 
Mem_PoolCreate((MEM_POOL       *)&AppMemPoolFromHeap,
               (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) {
    size_rem = Mem_SegGetSizeRem(&AppMemPoolFromHeap, 4u, &err);
    if (err == LIB_ERR_NONE) {
        printf("%u more octets available.", size_rem);
    }
}
 
 
Mem_PoolCreate((MEM_POOL       *)&AppMemPoolFromUserMemSeg,
               (void           *)0x21000000,       /* Create pool from memory at 0x21000000 ...      */
               (CPU_SIZE_T      )10000u,           /* ... from a 10000-octet segment        ...      */
               (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) {
    size_rem = Mem_SegGetSizeRem(&AppMemPoolFromUserMemSeg, 4u, &err);
    if (err == LIB_ERR_NONE) {
        printf("%u more octets available.", size_rem);
    }
}