Beispiel #1
0
        public CPUContext(Kernel pKernel)
        {
            m_Kernel = pKernel;
            m_Thread = null;
            m_Terminate = false;
            m_Release = false;
            m_Task = null;
            m_Execute = null;
            m_DelaySuspend = 0;
            m_SuspendFlag = 0;

            if (m_TlsIndex == null)
                m_TlsIndex = new ThreadLocal<CPUContext>();
        }
Beispiel #2
0
        public CPUContext(Kernel pKernel)
        {
            m_Kernel       = pKernel;
            m_Thread       = null;
            m_Terminate    = false;
            m_Release      = false;
            m_Task         = null;
            m_Execute      = null;
            m_DelaySuspend = 0;
            m_SuspendFlag  = 0;

            if (m_TlsIndex == null)
            {
                m_TlsIndex = new ThreadLocal <CPUContext>();
            }
        }
Beispiel #3
0
        public void Activate(Task Task, TTaskExecute pExecute)
        {
            if (m_Thread != null)
                throw new Exception();

            m_Task = Task;
            m_Execute = pExecute;
            m_SuspendFlag = SUSPEND_FLAG_KERNEL_REQUEST;

            m_Thread = new Thread(ThreadProc);
            if (m_Thread == null)
                throw new Exception();
            m_Thread.Start();

            while ((m_SuspendFlag & SUSPEND_FLAG_SWITCH_TO_KERNEL) == 0)
                Thread.Yield();
        }
Beispiel #4
0
        public void Activate(Task Task, TTaskExecute pExecute)
        {
            if (m_Thread != null)
            {
                throw new Exception();
            }

            m_Task        = Task;
            m_Execute     = pExecute;
            m_SuspendFlag = SUSPEND_FLAG_KERNEL_REQUEST;

            m_Thread = new Thread(ThreadProc);
            if (m_Thread == null)
            {
                throw new Exception();
            }
            m_Thread.Start();

            while ((m_SuspendFlag & SUSPEND_FLAG_SWITCH_TO_KERNEL) == 0)
            {
                Thread.Yield();
            }
        }