示例#1
0
文件: Nucleus.cs 项目: h7ga40/uITron3
        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;
        }
示例#2
0
文件: Nucleus.cs 项目: h7ga40/uITron3
 internal void EnumMemoryBlock(MemoryPool mpl)
 {
     mpl.EnumMemoryBlock(this, EnumBlockCallBack);
 }