heap_t *create_heap(uint32_t start, uint32_t end, uint32_t max, uint8_t supervisor, uint8_t readonly) { heap_t *heap = (heap_t*) kmalloc(sizeof(heap_t)); ASSERT((start % 0x1000 == 0)); ASSERT((end % 0x1000 == 0)); heap->index = place_list((type_t*) start, HEAP_INDEX_SIZE, &header_t_lessthan); start += sizeof(type_t) * HEAP_INDEX_SIZE; if ((start & 0xFFFFF000) != 0) { start &= 0xFFFFF000; start += 0x1000; } heap->start_address = start; heap->end_address = end; heap->max_address = max; heap->supervisor = supervisor; heap->readonly = readonly; header_t *hole = (header_t*) start; hole->size = end - start; hole->magic = HEAP_MAGIC; hole->is_hole = 1; insert_list((type_t) hole, &heap->index); return heap; }
int cgiParser() { //request call=status if(!memscmp(query,"status") && uid > 0){ id=status(); if(id < 0) { return FALSE; } len=snprintf(query,BLOCK-1,"<check><place>%d</place></check>",id); if ( id == 0 ) place_list(); cgiWrite(query,len); //request call=list } else if(!memscmp(query,"getplace") && uid > 0){ place_list(); //request call=getuser } else if(!memscmp(query,"getuser") && uid > 0){ get_user(); //request call=getmsg } else if(!memscmp(query,"getmsg") && uid > 0){ place_get_message(); //request call=fresh } else if(!memscmp(query,"fresh") && uid > 0){ get_user(); if(uid>0) place_get_message(); //request call=addmsg } else if(!memscmp(query,"addmsg") && !cgiFormString ("msg",query,150) && uid > 0){ if(!memcmp(query,"/MSG ",5)) { place_add_private(query+5); } else { place_add_message(query); } //request call=join } else if(!memscmp(query,"join") && !cgiFormString ("place",query,3) && uid > 0){ id=atoi(query); user_join(id); cgiWriteStr("<action>join</action>"); cgiprintf("<place_id>%s</place_id>",query); //request call=logout } else if(!memscmp(query,"logout") ){ LOGOUT return FALSE; //request call=login } else if(!memscmp(query,"login") && !cgiFormString ("login",REG_LOGIN,REG_LOGIN_SIZE) && !cgiFormString ("password",REG_PASS,REG_PASS_SIZE)){