Esempio n. 1
0
        private void CreateThreadNState(ParserParagraph aParagraph, NThread aThread, string aNStateName, bool aCapturesWaitObject)
        {
            StringBuilder format = new StringBuilder("NThread @ %8x Pri %d NState " + aNStateName);

            //
            if (aCapturesWaitObject)
            {
                format.Append(" %8x");
            }
            format.Append("\r\n");
            //
            //
            string finalFormat = format.ToString();

            NThread.TNThreadState state = NThread.NStateFromString(aNStateName);
            ParserLine            l1    = ParserLine.NewSymFormat(finalFormat);

            l1.Tag = state;
            //
            l1[0].SetTargetProperty(aThread, "Address");
            l1[1].SetTargetProperty(aThread, "Priority");
            //
            if (aCapturesWaitObject)
            {
                l1[2].SetTargetMethod(this, "SetThreadNStateWaitObject");
            }
            //
            l1.ElementComplete += new ParserElementBase.ElementCompleteHandler(NThreadState_ElementComplete);
            aParagraph.Add(l1);
        }
Esempio n. 2
0
        void NThreadState_ElementComplete(ParserElementBase aElement)
        {
            ParserLine line = (ParserLine)aElement;

            System.Diagnostics.Debug.Assert(line.Tag is NThread.TNThreadState);
            NThread.TNThreadState state     = (NThread.TNThreadState)line.Tag;
            ParserParagraph       paragraph = line.Paragraph;

            System.Diagnostics.Debug.Assert(paragraph.Tag is NThread);
            NThread thread = (NThread)paragraph.Tag;

            thread.NState = state;
        }
Esempio n. 3
0
        public static TNThreadState NStateFromString(string aState)
        {
            NThread.TNThreadState ret = NThread.TNThreadState.EUnknown;
            //
            switch (aState.ToUpper())
            {
            case "READY":
                ret = NThread.TNThreadState.EReady;
                break;

            case "SUSPENDED":
                ret = NThread.TNThreadState.ESuspended;
                break;

            case "WAITFSEM":
                ret = NThread.TNThreadState.EWaitFastSemaphore;
                break;

            case "SLEEP":
                ret = NThread.TNThreadState.ESleep;
                break;

            case "BLOCKED":
                ret = NThread.TNThreadState.EBlocked;
                break;

            case "DEAD":
                ret = NThread.TNThreadState.EDead;
                break;

            case "WAITDFC":
                ret = NThread.TNThreadState.EWaitDfc;
                break;

            default:
            case "??":
                ret = NThread.TNThreadState.EUnknown;
                break;
            }
            //
            return(ret);
        }