Ejemplo n.º 1
0
void tipo_Cod_Operacion (int32_t id, header_t* header){

	sock_t* socketPlanificador=getSocketPlanificador(id);
	switch (get_operation_code(header)) {
	case ENVIO_QUANTUM:{
		int32_t recibido = _receive_bytes(socketPlanificador, &quantum, sizeof(int32_t));
		log_debug(loggerDebug,"CPU:%d recibio de Planificador codOperacion %d QUANTUM: %d",id, get_operation_code(header), quantum);
		if (recibido == ERROR_OPERATION || recibido == SOCKET_CLOSED)return;
		break;
	}
	case ENVIO_PCB:{
		log_debug(loggerDebug,"CPU: %d recibio de Planificador codOperacion %d PCB",id, get_operation_code(header));
		char* pedido_serializado = malloc(get_message_size(header));
		int32_t recibido = _receive_bytes(socketPlanificador, pedido_serializado, get_message_size(header));
		if(recibido == ERROR_OPERATION || recibido == SOCKET_CLOSED) {
			log_debug(loggerDebug, "Error al recibir el PCB del planificador");
			return;
		}
		PCB* pcb = deserializarPCB (pedido_serializado);
		free(pedido_serializado);
		int32_t inicial;int32_t final;
		inicial=obtengoSegundos();	tiempoInicial[id]=inicial;estado[id]=1;
		ejecutar(id, pcb);
		final=obtengoSegundos(); tiempoFinal[id]=final;
		if(final>inicial){
			tiempoAcumulado[id]+=(final-inicial);
		}else if(final<inicial){
			tiempoAcumulado[id]+=final;
		}
		estado[id]=0;
		break;
		}
int main(void) {

	tipoPCB pcb;
		pcb.estado = 'm';
		pcb.insPointer = 123;
		pcb.pid = 100;
		pcb.ruta = "tuvieja";

	imprimirPCB(pcb);

	void* buffer = serializarPCB(pcb);

	tipoPCB pcbRecibido;
	deserializarPCB(buffer, &pcbRecibido);

	imprimirPCB(pcbRecibido);

	return EXIT_SUCCESS;
}