Example #1
0
/*
 *  ======== Memory_redefine ========
 */
Bool ti_sdo_ce_osal_Memory_redefine(Int segId, Uint32 base, Uint32 size)
{
    HeapMem_Params params;
    HeapMem_Handle heap;
    Memory_Stat    stat;

    if ((segId < 0) || (segId >= Memory_numHeaps)) {
        Log_print2(Diags_USER7, "Memory_redefine> segId (%d) out of range. "
                "Should be < %d", (IArg)segId,
                (IArg)Memory_numHeaps);
        return (FALSE);
    }

    if (!Memory_segStat(segId, &stat)) {
        Log_print0(Diags_USER7, "Memory_redefine> Memory_segStat() failed!");
        return (FALSE);
    }

    if (stat.used > 0) {
        Log_print0(Diags_USER7, "Memory_redefine> Heap in use!");
        return (FALSE);
    }

    heap = ti_sdo_ce_osal_Memory_heapList[segId];

    HeapMem_destruct(HeapMem_struct(heap));

    HeapMem_Params_init(&params);
    params.size = size;
    params.buf = (Ptr)base;

    HeapMem_construct(HeapMem_struct(heap), &params);

    return (TRUE);
}
Example #2
0
/*
 *  ======== MEM_redefine ========
 */
Void MEM_redefine(Int id, Ptr base, MEM_sizep length)
{
    IArg           key;
    HeapMem_Params params;
    HeapMem_Handle heap;

    /* Make sure the segid is valid. */    
    if ((id < 0) || (id == 0) || ((Uns)id >= MEM_tabSize)) {
        SYS_error("MEM", SYS_EINVAL);
        return;
    }
    
    key = HeapMem_enter();
    
    if (MEM_table[id] == NULL) {
        HeapMem_leave(key);
        SYS_error("MEM", SYS_EINVAL);        
        return;
    }
    
    heap = HeapMem_Handle_from_xdc_runtime_IHeap(MEM_table[id]);

    HeapMem_destruct(HeapMem_struct(heap));

    HeapMem_Params_init(&params);
    params.size = length;
    params.buf = base;

    HeapMem_construct(HeapMem_struct(heap), &params);

    HeapMem_leave(key);
}