char* serializar_pedido_crear_hilo_t(pedido_crear_hilo_t* pedido)
{
	char* bytes = malloc(tamanio_pedido_crear_hilo_t_serializado());

	uint32_t offset = 0;
	memcpy(bytes + offset, &pedido->flag, sizeof(flag_t));

	offset += sizeof(flag_t);
	memcpy(bytes + offset, serializar_tcb(pedido->tcb),
		tamanio_tcb_serializado());

	return bytes;
}
// COMIENZO DE RESPUESTA DE CREAR SEGMENTO
char* serializar_pedido_interrupcion_t(pedido_interrupcion_t* pedido)
{
	char* bytes = malloc(tamanio_pedido_interrupcion_t_serializado());

	uint32_t offset = 0;
	memcpy(bytes + offset, &pedido->flag, sizeof(flag_t));

	offset += sizeof(flag_t);
	memcpy(bytes + offset, &pedido->direccion_de_memoria, sizeof(direccion));

	offset += sizeof(direccion);
	memcpy(bytes + offset, serializar_tcb(pedido->tcb),
		tamanio_tcb_serializado());

	return bytes;
}
char* serializar_pedido_bloquear_t(pedido_bloquear_t* pedido)
{
	char* bytes = malloc(tamanio_pedido_bloquear_t_serializado());

	uint32_t offset = 0;
	memcpy(bytes + offset, &pedido->flag, sizeof(flag_t));

	offset += sizeof(flag_t);
	memcpy(bytes + offset, &pedido->identificador_de_recurso, sizeof(uint32_t));

	offset += sizeof(uint32_t);
	char* tcb_serializado = serializar_tcb(pedido->tcb);
	memcpy(bytes + offset, tcb_serializado,tamanio_tcb_serializado());

	free(tcb_serializado);
	return bytes;
}
char* serializar_respuesta_de_nuevo_tcb_t(
	respuesta_de_nuevo_tcb_t* rta_nuevo_tcb)
{
	char* bytes = malloc(tamanio_respuesta_de_nuevo_tcb_t_serializado());

	uint32_t offset = 0;
	memcpy(bytes + offset, &rta_nuevo_tcb->flag, sizeof(flag_t));

	offset += sizeof(flag_t);
	memcpy(bytes + offset, &rta_nuevo_tcb->quantum, sizeof(uint32_t));

	offset += sizeof(uint32_t);
	char* tcb_serializado = serializar_tcb(rta_nuevo_tcb->tcb);
	memcpy(bytes + offset, tcb_serializado, tamanio_tcb_serializado());

	free(tcb_serializado);

	return bytes;
}
char* serializar_pedido_con_resultado_t(
	pedido_con_resultado_t* pedido_con_resultado)
{
	char* bytes = malloc(tamanio_pedido_con_resultado_t_serializado());

	uint32_t offset = 0;
	memcpy(bytes + offset, &pedido_con_resultado->flag, sizeof(flag_t));

	offset += sizeof(flag_t);
	memcpy(bytes + offset, &pedido_con_resultado->informacion, sizeof(int32_t));

	offset += sizeof(int32_t);
	memcpy(bytes + offset, &pedido_con_resultado->resultado,
		sizeof(resultado_t));

	offset += sizeof(resultado_t);
	memcpy(bytes + offset, serializar_tcb(pedido_con_resultado->tcb),
		tamanio_tcb_serializado());

	return bytes;
}
int main(void) {

	int i;
	t_hilo hilo,hilo2;
	uint16_t quantum = 27,quantum2 = 0;

	hilo.base_stack = 17632785;
	hilo.cola = READY;
	hilo.cursor_stack = 127;
	hilo.kernel_mode = 0;
	hilo.pid = 1147;
	hilo.puntero_instruccion = 2;
	for (i = 0; i < 5; ++i)
		hilo.registros[i] = 13 + i;
	hilo.segmento_codigo = 38155741;
	hilo.segmento_codigo_size = 1024;
	hilo.tid = 0;

	char* stream = serializar_tcb(&hilo,quantum);

	quantum2 = (uint16_t) *stream;
	deserializar_tcb(&hilo2,(stream + 2));

	printf("Quantum Valor:			%8d\n", quantum2);
	printf("Registro PID Valor:		%8d\n", hilo2.pid);
	printf("Registro TID Valor:		%8d\n", hilo2.tid);
	printf("Registro KM Valor:		%8d\n", hilo2.kernel_mode);
	printf("Registro CS Valor:		%8d\n", hilo2.segmento_codigo);
	printf("Registro CS_Size Valor:		%8d\n", hilo2.segmento_codigo_size);
	printf("Registro IP Valor:		%8d\n", hilo2.puntero_instruccion);
	printf("Registro Stack Valor:		%8d\n", hilo2.base_stack);
	printf("Registro Stack_Size Valor:	%8d\n", hilo2.cursor_stack);
	for(i = 0;i < 5; ++i)
		printf("Registro %c. Valor:		%8d\n",('A'+i), hilo2.registros[i]);
	printf("Registro COLA:			%8d\n", hilo2.cola);
	puts("\n");

	return 0;

}