/* * ======== 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(¶ms); params.size = size; params.buf = (Ptr)base; HeapMem_construct(HeapMem_struct(heap), ¶ms); return (TRUE); }
/* * ======== 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(¶ms); params.size = length; params.buf = base; HeapMem_construct(HeapMem_struct(heap), ¶ms); HeapMem_leave(key); }