Exemple #1
0
        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
        }
Exemple #2
0
        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
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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;
        }
Exemple #5
0
        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;
        }