Example #1
0
        public Thread(aMethod entry, string title)
        {
            name = title;
            uint ss = 0x10;
            uint cs = 0x08;

            TID            = NewThreadID++;
            basePriority   = (int)THREAD_PRIORITY.NORMAL;
            realPriority   = basePriority;
            state          = THREAD_STATES.RUNNABLE;
            kernelStackTop = Heap.alloc(1024);
            kernelStack    = kernelStackTop + 1024;
            userStack      = Heap.alloc(4096);
            uint *stack = (uint *)(userStack + 4096);

            userStackTop = userStack;

            *--stack = ss;                        // ss ?
            *--stack = 0x00000202;                // eflags
            *--stack = cs;                        // cs
            *--stack = (uint)entry.GetHashCode(); // eip

            *--stack = 0;
            *--stack = 0;

            *--stack = 0; // EDI
            *--stack = 0; // ESI
            *--stack = 0; // EBP
            *--stack = 0; // No value
            *--stack = 0; // EBX
            *--stack = 0; // EDX
            *--stack = 0; // ECX
            *--stack = 0; // EAX

            userStack = (uint)stack;
            name      = title;
        }
Example #2
0
 public static void CallCode(aMethod aMethod, object obj)
 {
     CallCode(Utils.getMethodHandler(aMethod), obj);
 }
Example #3
0
 private static void CallCodeInstance(aMethod aMethod, object obj)
 {
     CallCodeInstance(Utils.getMethodHandler(aMethod), obj);
 }
Example #4
0
 private static void CallCodeStatic(aMethod aMethod)
 {
     CallCodeStatic(Utils.getMethodHandler(aMethod));
 }
Example #5
0
 public static uint getMethodHandler(aMethod method)
 {
     return((uint)method.GetHashCode());
 }
Example #6
0
 public static void SetRealHandler(byte aIntNo, aMethod aHandler)
 {
     isr_routines[aIntNo] = Utils.getMethodHandler(aHandler);
 }
Example #7
0
 public static void SetIntHandler(byte aIntNo, aMethod aHandler)
 {
     SetRealHandler((byte)(0x20 + aIntNo), aHandler);
 }