PxMcInsertBlk()

Insert a new block into a memory class.

APPLIES TO

1.0.0

SYNOPSIS
PxError_t PxMcInsertBlk (PxMc_t McId, PxMptr_t blk, PxSize_t size);
ARGUMENTS
McId

Memory class

blk

The memory block to insert

size

Size of the memory block

RETURN VALUES
  • PXROS error code

ERROR CODES

PXERR_ACCESS_RIGHT

The calling task has not the right to access the memory class

PXERR_MC_ILLMC

mc is not a valid memory class object

PXERR_GLOBAL_ILLEGAL_CORE

The requested memory class is not on the same core

PXERR_MC_ILLSIZE

size is less than the required minimum size or not a power of 2 (for Buddy memory class)

PXERR_MC_ILLALIGN

blk address is not properly aligned

PXERR_INIT_ILLMCTYPE

The type for PXMcSystemdefault is different from PXMcVarsized, PXMcVarsizedAdjusted and PXMcVarsizedAligned

PXERR_MC_DAMAGED_BLOCK

The block in memory class has been damaged

PXERR_MC_INCONSISTENCY

Inconsistency in memory class: blk

PXERR_UNSUPPORTED_MCTYPE

mc is not supported (If McId corresponds to PXMcVarsized, PXMcVarsizedAligned, PXMcVarsizedAdjusted)

DESCRIPTION

PxMcInsertBlk inserts a new block of the size size into the memory class mc.

IMPLEMENTATION GUIDELINES
Before call
  • McId must be:

    • a valid PXROS-HR memory class created with a PxMcRequest call (V). The validity of McId may also be checked by the PxMcIsValid macro (F).

    • the symbolic value PXMcSystemdefault specifying the system memory class (V)

    • the symbolic value PXMcTaskdefault specifying the task’s memory class (V)

  • The memory class must be created on the same core as the caller runs on. The creator core id can be read with the macro PxMcCoreId and the own core id with PxGetCoreId (C).

  • blk must be a valid memory pointer. The memory must be an area, which has never been part of a memory class or it has to be removed from a memory class with PxMcRemoveBlk.

  • size must be a plausible value given as a constant (V) or as a result of a PxMcRemoveBlk call (parameter *Size (V).

After call
  • The function returns PXERR_NOERROR if the memory block has been inserted into the memory class. Any other return value describes an error, which has to be interpreted. (C)

Best Practice
  • PxMcInsertBlk should only be called during initialization to ensure the availability of the memory in a memory class.

SEE ALSO
USAGE
#include "pxdef.h"

PxError_t Err = PxMcInsertBlk(mcId, (PxMptr_t)memoryTask, MEMORY_SIZE_TASK);;

if (Err != PXERR_NOERROR) {
    // Report error
}