diff --git a/allocate.c b/allocate.c index 9d26980c3149be452f0b91ff6e1bee9f86934aea..8a8fdf41bbce077412d6904ddb15b1c41772e17a 100644 --- a/allocate.c +++ b/allocate.c @@ -22,6 +22,7 @@ typedef struct { int justStarted; int startTime; int timeRemAtStartTime; + int finished; } process; typedef struct { @@ -182,9 +183,10 @@ int main(int argc, char *argv[]) { headData(completedProcesses); process * currProc = currNode->data; while ( currNode ){ - if ( currProc!= NULL && currProc->timeCompleted >= currentTime ) { + if ( currProc!= NULL && currProc->timeCompleted <= currentTime && !currProc->finished) { printf("%d,FINISHED,pid=%s,proc_remaining=%d\n", currProc->timeCompleted, currProc->processID, numProcessesLeft); + currProc->finished = -1; } currNode = currNode->next; if (currNode) currProc = currNode->data; @@ -240,9 +242,10 @@ int main(int argc, char *argv[]) { headData(completedProcesses); process * currProc = currNode->data; while ( currNode ){ - if ( currProc!= NULL && currProc->timeCompleted >= currentTime ) { + if ( currProc!= NULL && currProc->timeCompleted >= currentTime && currProc->finished ) { printf("%d,FINISHED,pid=%s,proc_remaining=%d\n", currProc->timeCompleted, currProc->processID, numProcessesLeft); + currProc->finished = -1; } currNode = currNode->next; if (currNode) currProc = currNode->data; @@ -360,6 +363,7 @@ void initializeProcess(char data[], process *newProcess) { newProcess->timeRemaining = newProcess->executionTime; newProcess->timeRemAtStartTime = newProcess->timeRemaining; newProcess->justStarted = 0; + newProcess->finished = 0; } process *headData(llist *q) {