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; }