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; }
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; }
void idle() { while(1) { wprintk(L"IDLE @ CPU%u\n", use_smp == true ? get_apic_id() : 0); schedule(); } return; }