Ejemplo n.º 1
0
        private void HandleIRQ(ref INTs.IRQContext aContext)
        {
            int      T0Delay = (int)T0DelyNS;
            PITTimer hndlr   = null;

            if (ActiveHandlers.Count > 0)
            {
                T0Countdown = 65535;
            }

            for (int i = ActiveHandlers.Count - 1; i >= 0; i--)
            {
                hndlr = ActiveHandlers[i];

                hndlr.NSRemaining -= T0Delay;

                if (hndlr.NSRemaining < 1)
                {
                    if (hndlr.Recuring)
                    {
                        hndlr.NSRemaining = hndlr.NanosecondsTimeout;
                    }
                    else
                    {
                        hndlr.ID = -1;
                        ActiveHandlers.RemoveAt(i);
                    }

                    hndlr.HandleTrigger();
                }
            }
        }
Ejemplo n.º 2
0
        public void HandleInterrupt()
        {
            int      T0Delay = (int)T0DelyNS;
            PITTimer hndlr   = null;

            for (int i = ActiveHandlers.Count - 1; i >= 0; i--)
            {
                hndlr = ActiveHandlers[i];

                hndlr.NSRemaining -= T0Delay;

                if (hndlr.NSRemaining < 1)
                {
                    if (hndlr.Recuring)
                    {
                        hndlr.NSRemaining = hndlr.NanosecondsTimeout;
                    }
                    else
                    {
                        hndlr.ID = -1;
                        ActiveHandlers.RemoveAt(i);
                    }
                    hndlr.HandleTrigger();
                }
            }
        }