public MemoryPoolFixedsize(ID mpfid, ref T_CMPF pk_cmpf, Nucleus pNucleus) { pointer Block; m_MpfID = mpfid; m_cmpf = pk_cmpf; m_Nucleus = pNucleus; for (int i = 0; i < pk_cmpf.blkcnt; i++) { Block = new pointer(pk_cmpf.addr, i * pk_cmpf.blksz); pointer.memset(Block, 0, pk_cmpf.blksz); m_MpfQueue.AddLast(Block); } }
public ER CreateMemoryPoolFixedsize(ID mpfid, ref T_CMPF pk_cmpf, out ID p_mpfid) { int i; MemoryPoolFixedsize Mpf = null; //if (pk_cmpf == null) // return ER.E_PAR; if (mpfid == ID.ID_AUTO) { //if (p_mpfid == 0) // return ER.E_PAR; mpfid.Value = 1; for (i = 0; ; i++) { if (i >= m_MemPoolFxTable.Count) { Mpf = new MemoryPoolFixedsize(mpfid, ref pk_cmpf, this); m_MemPoolFxTable.Add(Mpf); break; } if (mpfid == m_MemPoolFxTable[i].MpfID) { mpfid.Value++; } else { Mpf = new MemoryPoolFixedsize(mpfid, ref pk_cmpf, this); m_MemPoolFxTable.Insert(i, Mpf); break; } } p_mpfid = mpfid; } else { ID tmpid; p_mpfid = ID.NULL; for (i = 0; i < m_MemPoolFxTable.Count; i++) { tmpid = m_MemPoolFxTable[i].MpfID; if (mpfid == tmpid) { return(ER.E_OBJ); } else if (mpfid < tmpid) { break; } } Mpf = new MemoryPoolFixedsize(mpfid, ref pk_cmpf, this); m_MemPoolFxTable.Insert(i, Mpf); } return(ER.E_OK); }
public ER cre_mpf(ID mpfid, ref T_CMPF pk_cmpf, out ID p_mpfid) { ER Result = ER.E_NOEXS; p_mpfid = ID.NULL; if (g_Kernel == null) return ER.E_DLT; g_Kernel.LockCPU(); try { Result = g_Kernel.Nucleus.CreateMemoryPoolFixedsize(mpfid, ref pk_cmpf, out p_mpfid); } finally { g_Kernel.UnlockCPU(); } return Result; }
public ER CreateMemoryPoolFixedsize(ID mpfid, ref T_CMPF pk_cmpf, out ID p_mpfid) { int i; MemoryPoolFixedsize Mpf = null; //if (pk_cmpf == null) // return ER.E_PAR; if (mpfid == ID.ID_AUTO) { //if (p_mpfid == 0) // return ER.E_PAR; mpfid.Value = 1; for (i = 0; ; i++) { if (i >= m_MemPoolFxTable.Count) { Mpf = new MemoryPoolFixedsize(mpfid, ref pk_cmpf, this); m_MemPoolFxTable.Add(Mpf); break; } if (mpfid == m_MemPoolFxTable[i].MpfID) { mpfid.Value++; } else { Mpf = new MemoryPoolFixedsize(mpfid, ref pk_cmpf, this); m_MemPoolFxTable.Insert(i, Mpf); break; } } p_mpfid = mpfid; } else { ID tmpid; p_mpfid = ID.NULL; for (i = 0; i < m_MemPoolFxTable.Count; i++) { tmpid = m_MemPoolFxTable[i].MpfID; if (mpfid == tmpid) { return ER.E_OBJ; } else if (mpfid < tmpid) { break; } } Mpf = new MemoryPoolFixedsize(mpfid, ref pk_cmpf, this); m_MemPoolFxTable.Insert(i, Mpf); } return ER.E_OK; }