int connector_hub_add_connector (void * hub,void * connector,void * attr) { struct tcloud_connector_hub * conn_hub; struct List_head * head, *currlib; Record_List * record_elem; Record_List * conn_list; conn_hub = (struct tcloud_connector_hub *)hub; record_elem = Dalloc(sizeof(Record_List),hub); if(record_elem==NULL) return -ENOMEM; INIT_LIST_HEAD(&(record_elem->list)); record_elem->record=connector; conn_list=(Record_List *)conn_hub->connector_list; head = &(conn_list->list); List_add_tail(&(record_elem->list),head); struct tcloud_connector * new_conn = connector; int new_fd; new_fd=new_conn->conn_ops->getfd(new_conn); if(new_fd<=0) return -EINVAL; FD_SET(new_fd,&conn_hub->readfds); if(conn_hub->nfds<new_fd+1) conn_hub->nfds=new_fd+1; return 0; }
int connector_hub_init(void * hub) { struct tcloud_connector_hub * conn_hub; Record_List * conn_list; conn_hub = (struct tcloud_connector_hub *)hub; memset(conn_hub,0,sizeof(struct tcloud_connector_hub)); conn_list=Dalloc(sizeof(Record_List),hub); if(conn_list == NULL) return -ENOMEM; conn_list->record=NULL; INIT_LIST_HEAD(&(conn_list->list)); conn_hub->connector_list=conn_list; conn_hub->nfds=1; FD_ZERO(&conn_hub->readfds); FD_ZERO(&conn_hub->writefds); FD_ZERO(&conn_hub->exceptfds); conn_hub->curr_read = &(conn_list->list); conn_hub->curr_write = &(conn_list->list); conn_hub->curr_except = &(conn_list->list); conn_hub->curr_conn=NULL; return 0; }
void Sc_CSLoadMap(void) { FILE *fp = W_Open(sp_lfiles_Cyberspace, "r"); i32 w, h, *map; fscanf(fp, "%i %i", &w, &h); map = Malloc(sizeof *map * w * h); for(i32 y = 0; y < h; y++) for(i32 x = 0; x < w; x++) fscanf(fp, "%i ", &map[x + y * w]); fclose(fp); Dalloc(map); }
void * Palloc(int size,void * base) { switch( alloc_pointer_type(base)) { case ALLOC_TEMP: return Talloc(size); case ALLOC_STATIC: return Salloc(size); case ALLOC_DYNAMIC: return Dalloc(size,base); case ALLOC_CACHE: return Calloc(size); default: return NULL; } }