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