Ejemplo n.º 1
0
void escribir(uint8_t idProc, uint8_t nroPag, char* textoAEscribir, int socketSwap, int socketCPU) {

	t_contenido_pagina * escritura;
	escritura = iniciarContenidoPagina();
	t_marco_y_bit* marcoYBit;
	marcoYBit = iniciarMarcoYBit();

	marcoYBit = buscarSiEstaEnMemoria(idProc, nroPag,1);

	escritura->numeroPagina = nroPag;
	escritura->PID = idProc;
	string_append(&escritura->contenido, textoAEscribir);

	if (marcoYBit->bitPresencia == 0) { // traer de swap una pag, cargarla a memoria

		uretardo(configuracion->retardoMemoria );
		traerDeSwapUnaPaginaDeUnProcesoPorEscribir(idProc, nroPag, textoAEscribir, socketSwap);
		char* textoLogger = string_new();
		fallo++;
		string_append(&textoLogger, string_from_format("Acceso a swap (fallo de página:%i),  PID: %i, pagina: %i\n",fallo, idProc, nroPag));
		my_log_info(textoLogger);

	} else {	// entonces tengo el id del marco
		escribirEnMarcoYponerBitDeModificada(marcoYBit->idMarco, textoAEscribir);

		//LOG
		char* textoLogger = string_new();
		string_append(&textoLogger, string_from_format("Acceso a memoria realizado, PID: %i, N° de"
				" página: %i y N° de marco: %i\n", idProc, nroPag, marcoYBit->idMarco));
		my_log_info(textoLogger);

		enviarRtaEscribirACPU(escritura, socketCPU);
	}

}
Ejemplo n.º 2
0
int main(int argc, char **argv) {
    rtmp_state_t st;
    int to_write;

    if (argc != 3) {
        fprintf(stderr, "usage: %s <url> <0|1>\n", argv[0]);
        return 1;
    }

    logger_init("/dev/stderr");
    //set_logger_level(LOG_DEBUG);
    set_logger_level(LOG_INFO);

    to_write = atoi(argv[2]) ? 1 : 0;
    st.remote_url = argv[1];
    st.flv_path = "dump.flv";

    if (rtmp_state_init(&st, to_write)) {
        my_log_error("rtmp_state_init() failed");
        return 1;
    }

    if (rtmp_handshake(&st)) {
        my_log_error("handshake is unsuccessful");
        return 1;
    }

    my_log_info("handshake is successful");

    if (rtmp_send_connect(&st)) {
        my_log_error("connect failed");
        return 1;
    }

    if (to_write) {
        if (rtmp_client_wait_publishing(&st))
            return 1;

        my_log_info("ready to send media");

        if (rtmp_send_media(&st)) {
            my_log_info("error sending media");
            return 1;
        }

    } else {
        if (rtmp_client_wait_play(&st))
            return 1;
    
        my_log_info("ready to play");
    
        if (rtmp_receive_media(&st)) {
            my_log_info("error getting media");
            return 1;
        }
    }

    rtmp_state_free(&st);
    return 0;
}
Ejemplo n.º 3
0
void leer(uint8_t idProc, uint8_t pag, int socketSwap, int socketCPU) {

	char* contenido;

	t_contenido_pagina * lecturaMandarCpu;
	lecturaMandarCpu = iniciarContenidoPagina();
	t_marco_y_bit* marcoYBit;
	marcoYBit = iniciarMarcoYBit();

	lecturaMandarCpu->PID = idProc;
	lecturaMandarCpu->numeroPagina = pag;

	marcoYBit = buscarSiEstaEnMemoria(idProc, pag,0);

	if (marcoYBit->bitPresencia == 0) {	// no lo encontro
		uretardo(configuracion->retardoMemoria);
		traerDeSwapUnaPaginaDeUnProceso(idProc, pag, socketSwap); // aca se tiene que pedir a swap la pagina a y del proceso idProc
		char* textoLogger = string_new();
		fallo ++;
		string_append(&textoLogger, string_from_format("Acceso a swap (fallo de página: %i),  PID: %i, pagina: %i\n",fallo, idProc, pag));
		my_log_info(textoLogger);
	} else { // aca significa que trajo el id porque esta en memoria
		contenido = traerContenidoDeMarco(marcoYBit->idMarco);
		char* textoLogger = string_new();
		string_append(&textoLogger, string_from_format("Acceso a memoria realizado, PID: %i, N° de"
				" página: %i y N° de marco: %i\n", idProc, pag, marcoYBit->idMarco));
		my_log_info(textoLogger);
		lecturaMandarCpu->contenido = contenido;
		enviarACPUContenidoPaginaDeUnProcesoPorLeer(lecturaMandarCpu, socketCPU);
	}

}
Ejemplo n.º 4
0
static void validate_frequencies(int64_t *array, int64_t minValueIncluded,
		int64_t maxValueNotIncluded, int64_t numSamples) {
	int64_t interval_size = maxValueNotIncluded - minValueIncluded;
	int64_t *frequencies = MY_MALLOC(interval_size, int64_t);
	for (int64_t i = 0; i < numSamples; ++i) {
		frequencies[array[i] - minValueIncluded]++;
	}
	int64_t expectedFreq = my_math_round_int(
			numSamples / (double) interval_size);
	int64_t expectedFreqDelta = my_math_round_int(expectedFreq * 0.01);
	my_log_info("expected frequency=%"PRIi64" +/- %"PRIi64"\n", expectedFreq,
			expectedFreqDelta);
	int64_t cont_errors = 0;
	for (int64_t i = 0; i < interval_size; ++i) {
		int64_t freq = frequencies[i];
		bool is_ok = (MY_ABS_INT(expectedFreq - freq) <= expectedFreqDelta);
		if (interval_size <= 100) {
			double freq_pct = 100.0 * freq / (double) numSamples;
			my_log_info("%3"PRIi64" =%7"PRIi64" (%1.2lf%%)%s\n",
					i + minValueIncluded, freq, freq_pct, is_ok ? "" : " *");
		}
		if (!is_ok)
			cont_errors++;
	}
	if (cont_errors == 0)
		my_log_info("OK. All frequencies inside range [%"PRIi64",%"PRIi64"]\n",
				expectedFreq - expectedFreqDelta,
				expectedFreq + expectedFreqDelta);
	else
		my_log_info(
				"ERROR. %"PRIi64"/%"PRIi64" frequencies out of range [%"PRIi64",%"PRIi64"]\n",
				cont_errors, interval_size, expectedFreq - expectedFreqDelta,
				expectedFreq + expectedFreqDelta);
	MY_FREE(frequencies);
}
Ejemplo n.º 5
0
void pvcd_print_transformations() {
#ifndef NO_OPENCV
	my_log_info("\nAvailable Transformations:\n");
	for (int64_t i = 0; i < my_vectorObj_size(defs_tr); ++i) {
		Transform_Def *def = my_vectorObj_get(defs_tr, i);
		my_log_info("  %s%s%s\n", def->trCode,
				(def->helpText == NULL) ? "" : "_",
				(def->helpText == NULL) ? "" : def->helpText);
	}
#endif
}
Ejemplo n.º 6
0
static void validate_stats(double actualAvg, double expectedAvg) {
	double pctErrorAvg = 0.001;
	double expectedAvgDelta = expectedAvg * pctErrorAvg;
	//double errorAvg = MY_ABS_DOUBLE(expectedAvg - avg) / expectedAvg;
	my_log_info("expectedAverage=%lf +/- %lf\n", expectedAvg, expectedAvgDelta);
	if (MY_ABS_DOUBLE(expectedAvg - actualAvg) <= expectedAvgDelta)
		my_log_info("OK. average %lf inside range [%lf, %lf]\n", actualAvg,
				expectedAvg - expectedAvgDelta, expectedAvg + expectedAvgDelta);
	else
		my_log_info("ERROR. average %lf out of range [%lf, %lf]\n", actualAvg,
				expectedAvg - expectedAvgDelta, expectedAvg + expectedAvgDelta);
}
Ejemplo n.º 7
0
void my_random_testDouble(double minValueIncluded, double maxValueNotIncluded,
		int64_t numSamples) {
	my_log_info("\nrandomTestDouble\n");
	double *array = MY_MALLOC_NOINIT(numSamples, double);
	my_random_doubleList(minValueIncluded, maxValueNotIncluded, array,
			numSamples);
	double actualAvg = my_math_averageDoubleArray(numSamples, array);
	char *st = my_newString_double(actualAvg);
	my_log_info("%"PRIi64" random double numbers in [%lf,%lf): %s\n",
			numSamples, minValueIncluded, maxValueNotIncluded, st);
	validate_stats(actualAvg, (maxValueNotIncluded + minValueIncluded) / 2.0);
	MY_FREE_MULTI(st, array);
}
Ejemplo n.º 8
0
void enviarEscribirAlSwap(t_sobreescribir_swap *estructura, int socketSwap) {
	enviarStruct(socketSwap, ESCRIBIR_SWAP, estructura);
	char* textoLogger = string_new();
	cantEscriturasEnSwap++;
	string_append(&textoLogger, string_from_format("Escritura enviada a swap nro: %i\n", cantEscriturasEnSwap));
	my_log_info(textoLogger);
}
Ejemplo n.º 9
0
static struct MknnDistanceInstance multi_dist_new(const char *id_dist,
        MknnDistanceParams *params_distance) {
    struct State_Multi_Dist *state_dist = MY_MALLOC(1, struct State_Multi_Dist);
    if (mknn_distanceParams_getString(params_distance, "distances") != NULL) {
        MyVectorString *distnames = parseTerms(
                                        mknn_distanceParams_getString(params_distance, "distances"),
                                        ';');
        state_dist->num_distances = my_vectorString_size(distnames);
        if (state_dist->num_distances < 1) {
            my_log_info(
                "Parameter 'distances' must contain at least one distance\n");
            mknn_predefDistance_helpPrintDistance(id_dist);
        }
        state_dist->distances = MY_MALLOC(state_dist->num_distances,
                                          MknnDistance*);
        state_dist->weights_combination = MY_MALLOC(state_dist->num_distances,
                                          double);
        state_dist->weights_normalize = MY_MALLOC(state_dist->num_distances,
                                        double);
        for (int64_t i = 0; i < state_dist->num_distances; ++i) {
            char *term = my_vectorString_get(distnames, i);
            state_dist->distances[i] = mknn_distance_newPredefined(
                                           mknn_distanceParams_newParseString(term), true);
            state_dist->weights_combination[i] = 1;
            state_dist->weights_normalize[i] = 1;
        }
        my_vectorString_release(distnames, true);
    }
Ejemplo n.º 10
0
void my_random_testInt(int64_t minValueIncluded, int64_t maxValueNotIncluded,
		int64_t numSamples) {
	my_log_info("\nrandomTestInt\n");
	int64_t *array = MY_MALLOC(numSamples, int64_t);
	my_random_intList(minValueIncluded, maxValueNotIncluded, array, numSamples);
	double actualAvg = my_math_averageIntArray(numSamples, array);
	double expectedAvg = (maxValueNotIncluded - 1 + minValueIncluded) / 2.0;
	char *st = my_newString_double(actualAvg);
	my_log_info("%"PRIi64" random int numbers in [%"PRIi64",%"PRIi64"): %s\n",
			numSamples, minValueIncluded, maxValueNotIncluded, st);
	MY_FREE(st);
	validate_stats(actualAvg, expectedAvg);
	validate_frequencies(array, minValueIncluded, maxValueNotIncluded,
			numSamples);
	MY_FREE(array);
}
Ejemplo n.º 11
0
void my_local_drawKeypoint(IplImage* img, struct MyLocalKeypoint kp) {
	int px = my_math_round_int(kp.x);
	int py = my_math_round_int(kp.y);
	if (px == img->width)
		px = img->width - 1;
	if (py == img->height)
		py = img->height - 1;
	if (!MY_BETWEEN(px, 0,
			img->width - 1) || !MY_BETWEEN(py, 0, img->height-1)) {
		my_log_info("point (%i,%i) out of range %ix%i\n", px, py, img->width,
				img->height);
		return;
	}
	CvPoint orig = cvPoint(px, py);
	if (kp.radius == 0) {
		cvCircle(img, orig, FIXED_RADIUS, cvScalar(0, 255, 255, 255), THICKNESS,
				8, 0);
	} else {
		double radius = (RADIUS_ADD + kp.radius) * RADIUS_SCALE;
		if (radius < 2)
			radius = 2;
		int rad = my_math_round_int(radius);
		cvCircle(img, orig, rad, cvScalar(0, 255, 255, 0),
		THICKNESS, 8, 0);
		if (kp.angle != 0) {
			int dx = my_math_round_int(radius * cos(kp.angle));
			int dy = my_math_round_int(radius * sin(kp.angle));
			CvPoint dest = cvPoint(orig.x + dx, orig.y + dy);
			cvLine(img, orig, dest, cvScalar(0, 255, 255, 0), THICKNESS, 8, 0);
			cvCircle(img, dest, 1, cvScalar(0, 0, 255, 0), 1, 8, 0);
		}
		cvCircle(img, orig, 1, cvScalar(0, 255, 0, 0), 1, 8, 0);
	}
}
Ejemplo n.º 12
0
MknnDataset *mknn_datasetLoader_reorderNearestNeighbor(
		MknnDataset *superdataset, MknnDistance *distance,
		int64_t start_position,
		bool free_superdataset_on_release) {
	int64_t max_size = mknn_dataset_getNumObjects(superdataset);
	int64_t *sorted_array = MY_MALLOC(max_size, int64_t);
	for (int64_t i = 0; i < max_size; ++i)
		sorted_array[i] = i;
	if (start_position < 0) {
		start_position = getPositionCloserToZero(superdataset, distance);
	}
	my_assert_indexRangeInt("start_position", start_position, max_size);
	if (start_position != 0) {
		int64_t tmp = sorted_array[0];
		sorted_array[0] = sorted_array[start_position];
		sorted_array[start_position] = tmp;
	}
	int64_t sorted_size = 1;
	while (sorted_size < max_size) {
		if (false) {
			char *st1 = my_newString_arrayInt(sorted_array, sorted_size, ' ');
			char *st2 = my_newString_arrayInt(sorted_array + sorted_size,
					max_size - sorted_size, ' ');
			my_log_info("sorted=%s\n    left=%s\n", st1, st2);
			free(st1);
			free(st2);
		}
		MknnDataset *query_subset = mknn_datasetLoader_SubsetSegment(
				superdataset, sorted_array[sorted_size - 1], 1, false);
		MknnDataset *ref_subset = mknn_datasetLoader_SubsetPositions(
				superdataset, sorted_array + sorted_size,
				max_size - sorted_size, false);
		MknnIndex *index = mknn_index_newPredefined(
				mknn_predefIndex_LinearScan_indexParams(), true, ref_subset,
				true, distance, false);
		MknnResolver *resolver = mknn_index_newResolver(index,
				mknn_predefIndex_LinearScan_resolverExactNearestNeighbors(1, 0,
						1), true);
		MknnResult *result = mknn_resolver_search(resolver, true, query_subset,
		true);
		MknnResultQuery *res = mknn_result_getResultQuery(result, 0);
		my_assert_equalInt("num_nns", res->num_nns, 1);
		int64_t nn_position = sorted_size + res->nn_position[0];
		mknn_result_release(result);
		mknn_index_release(index);
		if (nn_position != sorted_size) {
			int64_t tmp = sorted_array[sorted_size];
			sorted_array[sorted_size] = sorted_array[nn_position];
			sorted_array[nn_position] = tmp;
		}
		sorted_size++;
	}
	MknnDataset *sortedset = mknn_datasetLoader_SubsetPositions(superdataset,
			sorted_array, max_size, free_superdataset_on_release);
	free(sorted_array);
	return sortedset;
}
static void priv_printIndicator(struct State_Multimetric *es,
		char *nomIndicador, char *st_fase, double valIndicador) {
	if (st_fase != NULL)
	my_log_info("[%s] ", st_fase);
	for (int64_t i = 0; i < es->numDistances; ++i) {
		char *norm = my_newString_double(es->normalization[i]);
		char *pond = my_newString_double(es->fraction[i]);
		if (i > 0)
		my_log_info(" + ");
		my_log_info("%s*%s*%s", es->distances[i]->name, norm, pond);
		MY_FREE_MULTI(norm, pond);
	}
	char *val = my_newString_double(valIndicador);
	if (nomIndicador != NULL)
	my_log_info(" => %s=%s", nomIndicador, val);
	my_log_info("\n");
	MY_FREE(val);
}
Ejemplo n.º 14
0
void leerArchivoDeConfiguracion(int argc, char *argv[]) {

	char* logMsg = NULL;

	if (argc < 2) {
		logMsg =
				string_from_format(
						"Debe especificar la ruta al archivo de configuracion, al invocar al programa, por ejemplo: ./Memoria /home/utnso/tp-2015-2c-tpso/Memoria/config_memoria.cfg\n");
		puts(logMsg);
		my_log_error(logMsg);
		exit(-1);
	}

	char* nombreArchivoConfig = nombreArchivoConfig = strdup(argv[1]);
	uint8_t result = checkearRutaArchivoConfig(nombreArchivoConfig);
	if (result == -1) {
		logMsg = string_from_format("Archivo de configuracion no encontrado. Parametro especificado: %s\n", nombreArchivoConfig);
		puts(logMsg);
		my_log_error(logMsg);
		exit(-1);
	} else {
		t_config* archivoConfig;
		archivoConfig = config_create(nombreArchivoConfig);
		//warning asignacion diferentes tipos
		configuracion = iniciarArchivoConfig();
		configuracion->puertoEscucha = config_get_int_value(archivoConfig, "PUERTO_ESCUCHA");
		configuracion->puertoSwap = config_get_int_value(archivoConfig, "PUERTO_SWAP");
		configuracion->ipSwap = strdup(config_get_string_value(archivoConfig, "IP_SWAP"));

		char* nombreMemoria = config_get_string_value(archivoConfig, "NOMBRE_MEMORIA");
		configuracion->nombreMemoria = strdup(nombreMemoria != NULL ? nombreMemoria : "NOMBRE_MEMORIA");

		configuracion->maximosMarcosPorProceso = config_get_int_value(archivoConfig, "MAXIMO_MARCOS_POR_PROCESO");
		configuracion->cantidadMarcos = config_get_int_value(archivoConfig, "CANTIDAD_MARCOS");
		configuracion->tamanioMarcos = config_get_int_value(archivoConfig, "TAMANIO_MARCO");
		configuracion->entradasTlb = config_get_int_value(archivoConfig, "ENTRADAS_TLB");
		if (string_equals(config_get_string_value(archivoConfig, "TLB_HABILITADA"),"SI")){
			configuracion->tlbHabilitada=1;
		}
		else if (string_equals(config_get_string_value(archivoConfig, "TLB_HABILITADA"),"NO")){
			configuracion->tlbHabilitada=0;
		}
		configuracion->retardoMemoria = config_get_int_value(archivoConfig, "RETARDO_MEMORIA");
		configuracion->algoritmo_reemplazo = strdup(config_get_string_value(archivoConfig, "ALGORITMO_REEMPLAZO"));
		my_log_info("[INFO]: Archivo de configuracion leido correctamente\n");

		logMsg = string_from_format("Archivo de configuracion leido correctamente\n");
		puts(logMsg);

		//config_destroy(archivoConfig);

	}

}
Ejemplo n.º 15
0
int rtmp_send_media(rtmp_state_t *st) {
    int rc;
    pthread_t rcv_thread;

    /* starting sending thread */
    if (pthread_create(&rcv_thread, NULL, &rtmp_recv_thread, (void *)st)
            || pthread_detach(rcv_thread))
        return 1;
    
    if (rtmp_send_thread(st))
        return 1;

    my_log_info("sent all data successfully");

    return 0;
}
Ejemplo n.º 16
0
static void printDetails(struct State_Multi_Dist *state_dist) {
    MyVectorString *arr = my_vectorString_new();
    for (int64_t i = 0; i < state_dist->num_distances; ++i) {
        const char *name = mknn_distance_getIdPredefinedDistance(
                               state_dist->distances[i]);
        my_vectorString_add(arr, (char*) name);
    }
    char *st1 = my_vectorString_toString(arr, ';');
    char *st2 = my_newString_arrayDouble(state_dist->weights_normalize,
                                         state_dist->num_distances, ';');
    char *st3 = my_newString_arrayDouble(state_dist->weights_combination,
                                         state_dist->num_distances, ';');
    my_log_info("distance MULTI uses distances=%s normalize=%s weights=%s\n",
                st1, st2, st3);
    my_vectorString_release(arr, false);
    free(st1);
    free(st2);
    free(st3);
}