void Scheduler(char* filename,Task* tasks, int num,int (*staticComparer)(const void*,const void*), int isDynamic, int (*dynamicComparer)(const void*,const void*)){ FILE* output; float currentTime, finishTime, nextTime; int missedTaskID; RunTask* taskQueue = NULL,*currentTask = NULL; currentTime = 0.0; finishTime = lcmPeriod(tasks,num); taskQueue = (RunTask*)malloc( sizeof(RunTask)*(num + 1) ); /*PLUS ONE FOR IDLE*/ CreateTaskQueue(&taskQueue,tasks,num,staticComparer); output = fopen(filename,"w"); printTitles(output,num); while(currentTime < finishTime){ PickTask(taskQueue,num, ¤tTask); nextTime = CalculateNext(&taskQueue,num,currentTask,currentTime); missedTaskID = CheckDeadLineMiss(taskQueue,num,nextTime); UpdateQueue(&taskQueue, num, currentTask,currentTime,nextTime,isDynamic,tasks,dynamicComparer,output); if (missedTaskID){ fprintf(output," T%d missed it's deadline.", missedTaskID); break; } currentTime = nextTime; fprintf(output,"\n"); } fclose(output); free(taskQueue); }
void printTitles (UAS_Pointer<UAS_Common> doc, int level) { int i; for (i = 0; i < level; i ++) fprintf (stderr, " "); fprintf (stderr, "%s\n", (char *) doc->title ()); UAS_Pointer<UAS_Common> curDoc; if (doc->type() == UAS_BOOK) { curDoc = doc->next(); while (curDoc != 0) { fprintf (stderr, "********** %s \n", (char *) curDoc->title ()); curDoc = curDoc->next(); } } else { UAS_List<UAS_Common> theList = doc->children (); for (i = 0; i < theList.length(); i ++) printTitles (theList[i], level + 1); } }