예제 #1
0
        public void Wait(KMessagePipe pipe, int message, int size, int outSize, int timeout, bool canHandleCallbacks)
        {
            this.State = KThreadState.Waiting;
            this.RemoveFromSchedule();

            this.CanHandleCallbacks = canHandleCallbacks;

            pipe.WaitingThreads.Enqueue(this);

            this.WaitingOn = KThreadWait.Mpp;
            this.WaitTimeoutSetup(( uint )timeout);
            this.WaitHandle        = pipe;
            this.WaitArgument      = ( uint )size;
            this.WaitAddress       = ( uint )message;
            this.WaitAddressResult = ( uint )outSize;

            if (canHandleCallbacks == true)
            {
                this.Kernel.CheckCallbacks();
            }

            this.Kernel.Schedule();
        }
예제 #2
0
        public void Wait( KMessagePipe pipe, int message, int size, int outSize, int timeout, bool canHandleCallbacks )
        {
            this.State = KThreadState.Waiting;
            this.RemoveFromSchedule();

            this.CanHandleCallbacks = canHandleCallbacks;

            pipe.WaitingThreads.Enqueue( this );

            this.WaitingOn = KThreadWait.Mpp;
            this.WaitTimeoutSetup( ( uint )timeout );
            this.WaitHandle = pipe;
            this.WaitArgument = ( uint )size;
            this.WaitAddress = ( uint )message;
            this.WaitAddressResult = ( uint )outSize;

            if( canHandleCallbacks == true )
            {
                this.Kernel.CheckCallbacks();
            }

            this.Kernel.Schedule();
        }