Exemplo n.º 1
0
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();
	}
}
Exemplo n.º 2
0
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;
}