/* * Create a new raw thread object. * Returns a null pointer if there isn't enough memory. */ static struct Kernel_Thread* Create_Thread(int priority, bool detached) { struct Kernel_Thread* kthread; void* stackPage = 0; /* * For now, just allocate one page each for the thread context * object and the thread's stack. */ kthread = Alloc_Page(); if (kthread != 0) stackPage = Alloc_Page(); /* Make sure that the memory allocations succeeded. */ if (kthread == 0) return 0; if (stackPage == 0) { Free_Page(kthread); return 0; } /*Print("New thread @ %x, stack @ %x\n", kthread, stackPage); */ /* * Initialize the stack pointer of the new thread * and accounting info */ Init_Thread(kthread, stackPage, priority, detached); /* Add to the list of all threads in the system. */ Add_To_Back_Of_All_Thread_List(&s_allThreadList, kthread); return kthread; }
void rb_call_inits() { Init_sym(); Init_var_tables(); Init_Object(); Init_Comparable(); Init_Enumerable(); Init_Precision(); Init_eval(); Init_String(); Init_Exception(); Init_Thread(); Init_Numeric(); Init_Bignum(); Init_Array(); Init_Hash(); Init_Struct(); Init_Regexp(); Init_pack(); Init_Range(); Init_IO(); Init_Dir(); Init_Time(); Init_Random(); Init_signal(); Init_process(); Init_load(); Init_Proc(); Init_Math(); Init_GC(); Init_marshal(); Init_version(); }
void Init_Scheduler(void) { struct Kernel_Thread* mainThread = (struct Kernel_Thread *) KERNEL_THREAD_OBJECT; PrintBoth("Initializing Scheduler\n"); /* * Create initial kernel thread context object and stack, * and make them current. */ Init_Thread(mainThread, (void *) KERNEL_STACK, PRIORITY_NORMAL, true); g_currentThread = mainThread; Add_To_Back_Of_All_Thread_List(&s_allThreadList, mainThread); /* * Create the idle thread. */ /*Print("starting idle thread\n");*/ Start_Kernel_Thread(Idle, 0, PRIORITY_IDLE, true); /* * Create the reaper thread. */ /*Print("starting reaper thread\n");*/ Start_Kernel_Thread(Reaper, 0, PRIORITY_NORMAL, true); }
void rb_call_inits() { Init_PreSymbol(); Init_id(); Init_var_tables(); Init_Object(); Init_Class(); Init_VM(); Init_Encoding(); Init_Comparable(); Init_Enumerable(); Init_Precision(); Init_String(); Init_Symbol(); Init_Exception(); Init_eval(); Init_jump(); Init_Numeric(); Init_Bignum(); Init_syserr(); Init_Array(); Init_Hash(); Init_ENV(); Init_Struct(); Init_Regexp(); Init_pack(); Init_marshal(); Init_Range(); Init_IO(); Init_Dir(); Init_Time(); Init_Random(); Init_signal(); Init_process(); Init_load(); Init_Proc(); Init_Binding(); Init_Math(); Init_GC(); Init_Enumerator(); Init_Thread(); //Init_Cont(); Init_Rational(); Init_Complex(); Init_version(); Init_PostGC(); Init_ObjC(); Init_BridgeSupport(); Init_FFI(); Init_Dispatch(); Init_Transcode(); Init_sandbox(); Init_PostVM(); }
/* * main: initialize and start the system */ int main (void) { osKernelInitialize (); // initialize CMSIS-RTOS //console.log("Hellow World"); Init_Thread(); // initialize peripherals here // create 'thread' functions that start executing, // example: tid_name = osThreadCreate (osThread(name), NULL); osKernelStart (); // start thread execution }
void rb_call_inits() { Init_sym(); Init_id(); Init_var_tables(); Init_Object(); Init_top_self(); Init_Encoding(); Init_Comparable(); Init_Enumerable(); Init_Precision(); Init_String(); Init_Exception(); Init_eval(); Init_jump(); Init_Numeric(); Init_Bignum(); Init_syserr(); Init_Array(); Init_Hash(); Init_Struct(); Init_Regexp(); Init_pack(); Init_transcode(); Init_marshal(); Init_Range(); Init_IO(); Init_Dir(); Init_Time(); Init_Random(); Init_signal(); Init_process(); Init_load(); Init_Proc(); Init_Binding(); Init_Math(); Init_GC(); Init_Enumerator(); Init_VM(); Init_ISeq(); Init_Thread(); Init_Cont(); Init_version(); }