static pid_t setup_dev (vfsmsg_t *msg) { pid_t pid; pid = createtask(TASK_PRIO_HIGH, PAGE_INVALID); allocatestack(pid, DEFAULT_STACK_SIZE); setuptask(pid, msg->mkdev.ask.driver, msg->mkdev.ask.args, NULL); starttask(pid); return pid; }
Task * insertmodel1(Task * head, float lamda, float u, float artime, int priority)// create the queue for task0 or task 1 { if(head == NULL) { head = createtask(lamda, u,priority); head -> artime = artime + head -> iatime; return head; } head -> next = insertmodel1( head-> next ,lamda, u , head -> artime, priority); head ->next -> prev = head; return head; }
//Model1 tasks creation Task * insertmodel1(Task * head, float lamda, float u, float aritime) { if(head == NULL) { head = createtask(lamda, u ); head -> aritime = aritime + head -> iatime; return head; } head -> next = insertmodel1( head-> next ,lamda, u , head -> aritime); return head; }
/* File's format: b n p1 p2 ... pn w1 w2 ... wn */ task_t* readtask(char* filename){ task_t* task; FILE *file; if( (file = fopen(filename,"r")) == 0 ) return NULL; knint b; if( fscanf(file,"%lld",&b) != 1 ) return NULL; int size; if( fscanf(file,"%d",&size) != 1 ) return NULL; task = createtask(size,b); item_t *head = task->items; knint *tmp; //int morethanb = 0; for( tmp = head->p ; tmp < head->p+size ; tmp++ ) { if( fscanf (file,"%lld", tmp) != 1 ) return 0; } for( tmp = head->w ; tmp < head->w+size ; tmp++ ) { if( fscanf (file,"%lld", tmp) != 1 ) return 0; //if( *tmp > b ) morethanb++; } /*if( morethanb > 0 ) { task_t* task2 = createtask(size-morethanb,b); item_t* head2; for( head = task->items, head2 = task2->items ; head < task->items+size ; head++ ) { if( *(head->w) <= b ) { *(head2->p) = *(head->p); *(head2->w) = *(head->w); head2++; } } free_task(&task); task = task2; }// if */ fclose(file); return task; }