Beispiel #1
0
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, &currentTask);
		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);
}
Beispiel #2
0
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);
    }
}