Example #1
0
void troca_bloq_to_ready(void) {
    PCB pcb_bloq;
    int pid_bloq = verifica_waiters();
    while(pid_bloq>-1) {

        printf("procurando waiters ### %d ###",pid_bloq);                       // debug
        if(busca_pcb(&fifo_bloqs,pid_bloq,&pcb_bloq)!=-1) {                     // armazena pcb que vai ser liberado na variavel

            remove_pcb(&fifo_bloqs,pid_bloq);                                   // exclui determinado PCB da lista de bloqueados
            insere_fifo(&fifo_aptos[pcb_bloq.prio], pcb_bloq);
        }
        pid_bloq = verifica_waiters();
    }
}
Example #2
0
/**
	Procedure: commandCleanup

	Purpose: Free Memory that is still allocated

	Parameters: None  

	Return value: None

	Calls: sys_free_mem, errorCheck  

	Globals: error

	Errors: None
**/
void commandCleanup(){
	//int error = sys_free_mem(userCommand); //!NOTE! - Display Errors
	//error = errorCheck(error);
	//printf("The error number is %d.\n", error); //test3------------------------------------------
	LLitem * tempCurr;
	int queueInt= 0;
	if(queueInt == 0 || queueInt == 4){
		tempCurr = head4;
		if(tempCurr != NULL){
			do{
				error = remove_pcb(tempCurr->val);
				if(error !=0){
					break;
				}
				else{
					error = free_pcb(tempCurr->val);
					if(error != 0){
						break;
					}
					else{
						tempCurr = tempCurr->next;	
					}
				}
			}while(tempCurr != head4 && tempCurr != NULL);
		}
	}
	if(queueInt == 0 || queueInt == 5){
		tempCurr = head5;
		if(tempCurr != NULL){
			do{
				error = remove_pcb(tempCurr->val);
				if(error !=0){
					break;
				}
				else{
					error = free_pcb(tempCurr->val);
					if(error != 0){
						break;
					}
					else{
						tempCurr = tempCurr->next;	
					}
				}
			}while(tempCurr != head5&& tempCurr != NULL);
		}
	}
	if(queueInt == 0 || queueInt == 6){
		tempCurr = head6;
		if(tempCurr != NULL){
			do{
				error = remove_pcb(tempCurr->val);
				if(error !=0){
					break;
				}
				else{
					error = free_pcb(tempCurr->val);
					if(error != 0){
						break;
					}
					else{
						tempCurr = tempCurr->next;	
					}
				}
			}while(tempCurr != head6&& tempCurr != NULL);
		}
	}
	if(queueInt == 0 || queueInt == 7){
		tempCurr = head7;
		if(tempCurr != NULL){
			do{
				error = remove_pcb(tempCurr->val);
				if(error !=0){
					break;
				}
				else{
					error = free_pcb(tempCurr->val);
					if(error != 0){
						break;
					}
					else{
						tempCurr = tempCurr->next;	
					}
				}
			}while(tempCurr != head7&& tempCurr != NULL);
		}
	}
}//end commandCleanup