예제 #1
0
파일: Semaphore.cs 프로젝트: mxslcn/uITron3
        public ER ReferStatus(ref T_RSEM pk_rsem)
        {
            //if (pk_rsem == null)
            //	return ER.E_PAR;

            // 拡張情報
            pk_rsem.exinf = m_csem.exinf;

            // 待ちタスクの有無
            pk_rsem.wtsk = m_TskQueue.First != null;

            // 現在の資源数
            pk_rsem.semcnt = m_Count;

            // 最大資源数
            pk_rsem.maxsem = m_csem.maxsem;

            return(ER.E_OK);
        }
예제 #2
0
파일: Semaphore.cs 프로젝트: h7ga40/uITron3
        public ER ReferStatus(ref T_RSEM pk_rsem)
        {
            //if (pk_rsem == null)
            //	return ER.E_PAR;

            // 拡張情報
            pk_rsem.exinf = m_csem.exinf;

            // 待ちタスクの有無
            pk_rsem.wtsk = m_TskQueue.First != null;

            // 現在の資源数
            pk_rsem.semcnt = m_Count;

            // 最大資源数
            pk_rsem.maxsem = m_csem.maxsem;

            return ER.E_OK;
        }
예제 #3
0
파일: Itron.cs 프로젝트: h7ga40/uITron3
        public ER ref_sem(ref T_RSEM pk_rsem, ID semid)
        {
            ER Result = ER.E_NOEXS;
            Semaphore Semaphore;

            if (g_Kernel == null)
                return ER.E_DLT;

            g_Kernel.LockCPU();
            try {
                Semaphore = g_Kernel.Nucleus.GetSemaphore(semid);
                if (Semaphore == null)
                    Result = ER.E_NOEXS;
                else
                    Result = Semaphore.ReferStatus(ref pk_rsem);
            }
            finally {
                g_Kernel.UnlockCPU();
            }

            return Result;
        }