public MemoryPool(ID mplid, ref T_CMPL pk_cmpl, Nucleus pNucleus) { TMemNode Block = new TMemNode(pk_cmpl.addr, pk_cmpl.mplsz); m_MplID = mplid; m_cmpl = pk_cmpl; m_Nucleus = pNucleus; m_MaxSize = pk_cmpl.mplsz; m_FreeSize = pk_cmpl.mplsz; m_FreeMem.AddLast(Block); #if DEBUG m_pFirstBlock = null; m_pLastBlock = null; m_nBlockCount = 0; m_Dumped = false; #endif }
public ER CreateMemoryPool(ID mplid, ref T_CMPL pk_cmpl, out ID p_mplid) { int i; MemoryPool Mpl = null; //if (pk_cmpl == null) // return ER.E_PAR; if (mplid == ID.ID_AUTO) { //if (p_mplid == 0) // return ER.E_PAR; mplid.Value = 1; for (i = 0; ; i++) { if (i >= m_MemPoolTable.Count) { Mpl = new MemoryPool(mplid, ref pk_cmpl, this); m_MemPoolTable.Add(Mpl); break; } if (mplid == m_MemPoolTable[i].MplID) { mplid.Value++; } else { Mpl = new MemoryPool(mplid, ref pk_cmpl, this); m_MemPoolTable.Insert(i, Mpl); break; } } p_mplid = mplid; } else { ID tmpid; p_mplid = ID.NULL; for (i = 0; i < m_MemPoolTable.Count; i++) { tmpid = m_MemPoolTable[i].MplID; if (mplid == tmpid) { return(ER.E_OBJ); } else if (mplid < tmpid) { break; } } Mpl = new MemoryPool(mplid, ref pk_cmpl, this); m_MemPoolTable.Insert(i, Mpl); } return(ER.E_OK); }
public ER cre_mpl(ID mplid, ref T_CMPL pk_cmpl, out ID p_mplid) { ER Result = ER.E_NOEXS; p_mplid = ID.NULL; if (g_Kernel == null) return ER.E_DLT; g_Kernel.LockCPU(); try { Result = g_Kernel.Nucleus.CreateMemoryPool(mplid, ref pk_cmpl, out p_mplid); } finally { g_Kernel.UnlockCPU(); } return Result; }
public ER CreateMemoryPool(ID mplid, ref T_CMPL pk_cmpl, out ID p_mplid) { int i; MemoryPool Mpl = null; //if (pk_cmpl == null) // return ER.E_PAR; if (mplid == ID.ID_AUTO) { //if (p_mplid == 0) // return ER.E_PAR; mplid.Value = 1; for (i = 0; ; i++) { if (i >= m_MemPoolTable.Count) { Mpl = new MemoryPool(mplid, ref pk_cmpl, this); m_MemPoolTable.Add(Mpl); break; } if (mplid == m_MemPoolTable[i].MplID) { mplid.Value++; } else { Mpl = new MemoryPool(mplid, ref pk_cmpl, this); m_MemPoolTable.Insert(i, Mpl); break; } } p_mplid = mplid; } else { ID tmpid; p_mplid = ID.NULL; for (i = 0; i < m_MemPoolTable.Count; i++) { tmpid = m_MemPoolTable[i].MplID; if (mplid == tmpid) { return ER.E_OBJ; } else if (mplid < tmpid) { break; } } Mpl = new MemoryPool(mplid, ref pk_cmpl, this); m_MemPoolTable.Insert(i, Mpl); } return ER.E_OK; }