예제 #1
0
itv_object_list_t *__itv_list_find(itv_object_t *p_this, int i_type, int i_mode)
{
	int i_count = 0;

	itv_object_list_t *p_list;

	switch(i_mode & 0x000f) {
		case FIND_ANYWHERE:
			return itv_list_find(p_this->icore, i_type, FIND_CHILD);
			break;
		case FIND_CHILD:
			itv_lock(p_this->icore);
			i_count = CountChildren(p_this, i_type);
			p_list = NewList(i_count);

			if(p_list->i_count != i_count) {
				itv_unlock(p_this->icore);
				p_list->i_count = 0;
				break;
			}

			p_list->i_count = 0;
			ListChildren(p_list, p_this, i_type);
			itv_unlock(p_this->icore);
			break;
		default:
			wprintk("unimplemented!\n");
			p_list = NewList(0);
			break;
	}

	return p_list;
}
예제 #2
0
int itv_adapter_register(itv_adapter_t *p_iadapter, struct module *p_owner, struct device *p_dev)
{
    int retval = 0;
    int adapter_id;

    itv_object_t *iadapter;

    DEBUG_CALLSTACK

    spin_lock(&p_iadapter->register_lock);
    if((iadapter = itv_object_find_name(p_iadapter->icore, p_iadapter->psz_object_name, FIND_CHILD)) != NULL) {
        wprintk("This adapter is already exist : %s\n",p_iadapter->psz_object_name);
        spin_unlock(&p_iadapter->register_lock);
        return -1;
    }

    if((adapter_id = itv_get_adapter_id(p_iadapter->icore)) == ITV_UNSET) {
        eprintk("itv_get_adapter_id() is failed\n");
        spin_unlock(&p_iadapter->register_lock);
        return -1;
    }

    p_iadapter->id		= adapter_id;
    p_iadapter->dev		= p_dev;
    p_iadapter->owner	= p_owner;

    itv_object_attach(p_iadapter, p_iadapter->icore);

    spin_unlock(&p_iadapter->register_lock);

    return retval;
}
예제 #3
0
void idle()
{
	while(1)
	{
		wprintk(L"IDLE            @ CPU%u\n", use_smp == true ? get_apic_id() : 0);
		schedule();
	}

	return;
}