Beispiel #1
0
		public static SharpOS.Kernel.ADC.Thread CreateThread(uint function_address)
		{
			void* stack = CreateStack(function_address);
			if (stack == null)
				return null;

			SharpOS.Kernel.ADC.Thread newThread = new SharpOS.Kernel.ADC.Thread();
			newThread.StackPointer		= stack;
			newThread.StackAddress		= (uint)stack;
			newThread.FunctionAddress	= function_address;
			return newThread;
		}
Beispiel #2
0
        public static SharpOS.Kernel.ADC.Thread CreateThread(uint function_address)
        {
            void *stack = CreateStack(function_address);

            if (stack == null)
            {
                return(null);
            }

            SharpOS.Kernel.ADC.Thread newThread = new SharpOS.Kernel.ADC.Thread();
            newThread.StackPointer    = stack;
            newThread.StackAddress    = (uint)stack;
            newThread.FunctionAddress = function_address;
            return(newThread);
        }
Beispiel #3
0
        private static unsafe void TimerHandler(IDT.ISRData data)
        {
            ticks++;

            for (int x = 0; x < EntryModule.MaxEventHandlers; ++x)
            {
                if (timerEvent[x] == 0)
                {
                    continue;
                }

                MemoryUtil.Call(timerEvent[x], ticks);
            }


            SharpOS.Kernel.ADC.Thread thread = Dispatcher.Dispatch((void *)data.Stack);
            if (thread != null)
            {
                IDT.Stack *newStack = (IDT.Stack *)thread.StackPointer;
                newStack->IrqIndex = data.Stack->IrqIndex;
                data.Stack         = newStack;
            }
        }