void __init __noreturn hal_main() { /* 开辟鸿蒙,谁为情种?最初的一切*/ km_cluster_init(); build_ram_list(); /* Go back to ARCH, we have inited the basic paging allocator */ hal_arch_init(HAL_ARCH_INIT_PHASE_EARLY); /* KERNEL */ kc_init(); kp_init(); ks_init(); hal_malloc_init(); hal_dpc_init(); hal_time_init(); hal_arch_init(HAL_ARCH_INIT_PHASE_MIDDLE); hal_console_init(); printk("GridOS 启动中...\n"); ke_module_entry(); local_irq_enable(); /* Driver pakcage loading, and it must be the last file */ hal_boot_module_loop(start_driver_ctx); if (last_package_id == driver_package_id && driver_pakcage) { ke_startup_driver_process(driver_pakcage, driver_size); } else { if (driver_size) printk("Driver package is not the last one, BSS in it may overlay the useful file data after it..."); else printk("No driver package was loaded..."); } printk("Hal startup ok.\n"); kernel_test(); while (1) { kt_schedule_driver(); /* If have no process, sleep */ if (!kt_schedule_running_count()) dumy_idle_ops(0); else kt_schedule(); } }
bool ScrollView::init() { if (!Layer::init()) return false; // Initialise the kinetiCroll context _kineti = kc_init(); kc_setuserdata(_kineti, this); kc_setcallback_0(_kineti, START_REFRESHING, &ScrollView_startRefreshing); kc_setcallback_0(_kineti, STOP_REFRESHING, &ScrollView_stopRefreshing); kc_setcallback_1(_kineti, UPDATE_POSITION, &ScrollView_updatePos); this->updateSizes(); // create the selector used by startRefreshing, etc. refresh_selector = schedule_selector(ScrollView::refresh); // enable touching _listener = EventListenerTouchOneByOne::create(); _listener->setSwallowTouches(true); // Let's get something HIGH-LEVEL, GENEROUS[?], and FIRST-LEVEL // Maybe it's better to call it ADVANCED. _listener->onTouchBegan = [=](Touch *touch, Event *event) { this->updateSizes(); Point pos = touch->getLocation(); kc_activate(_kineti, TOUCH_BEGAN, SCROLL_POSITION(pos)); return true; }; _listener->onTouchMoved = [=](Touch *touch, Event *event) { Point pos = touch->getLocation(); kc_activate(_kineti, TOUCH_MOVED, SCROLL_POSITION(pos)); }; _listener->onTouchEnded = [=](Touch *touch, Event *event) { Point pos = touch->getLocation(); kc_activate(_kineti, TOUCH_ENDED, SCROLL_POSITION(pos)); }; _eventDispatcher->addEventListenerWithSceneGraphPriority(_listener, this); return true; }