Exemplo n.º 1
0
void VMError::reset_signal_handlers() {
  // Save sigflags for resetted signals
  save_signal(0, SIGSEGV);
  save_signal(1, SIGBUS);
  os::signal(SIGSEGV, CAST_FROM_FN_PTR(void *, crash_handler));
  os::signal(SIGBUS, CAST_FROM_FN_PTR(void *, crash_handler));
}
Exemplo n.º 2
0
void VMError::reset_signal_handlers() {
  // install signal handlers for all synchronous program error signals
  sigset_t newset;
  sigemptyset(&newset);

  for (int i = 0; i < NUM_SIGNALS; i++) {
    save_signal(i, SIGNALS[i]);
    os::signal(SIGNALS[i], CAST_FROM_FN_PTR(void *, crash_handler));
    sigaddset(&newset, SIGNALS[i]);
  }
  pthread_sigmask(SIG_UNBLOCK, &newset, NULL);
}
Exemplo n.º 3
0
//=======================================================================================
// EJECUCIÓN FILTRO FIR
//=======================================================================================
int main(int argc, char *argv[])
{
    if (argc > 1)
    {
    }
    else
    {
        printf("The command had no other arguments.\n");
        return 0;
    }

    //<><><><><><><><><><><><><><><><><>//
    // 		SYSTEM INITIALIZING			//
    //<><><><><><><><><><><><><><><><><>//
    init_system();

    //<><><><><><><><><><><><><><><><><>//
    // 		  SIGNALS DECLARATION		//
    //<><><><><><><><><><><><><><><><><>//
    FIR_filter filtro,filtro2,filtro3;
    SIGNAL signal1;
    SIGNAL signal1_output;
    SIGNAL signal2_output;
    SIGNAL signal3_output;

    sscanf (argv[1],"%d",&filtro.F1);
    sscanf (argv[2],"%d",&filtro.F2);
    sscanf (argv[3],"%d",&filtro.order);
    sscanf (argv[4],"%d",&filtro.FS);
    sscanf (argv[5],"%d",&filtro.window_type);
    sscanf (argv[6],"%d",&filtro.filter_type);
    sscanf (argv[7],"%d",&filtro.sw_hw);

//	filtro.F1=12071;
//	filtro.F2=12171;
//	filtro.order=200;
//	filtro.FS=44100;
//	filtro.window_type=BLACKMAN_HARRIS;
//	filtro.filter_type=BS_FILTER;

    //<><><><><><><><><><><><><><><><><>//
    // FILTER COEFFICIENTS CALCULATION	//
    //<><><><><><><><><><><><><><><><><>//
    calc_FIR_coefs(&filtro);
//	calc_FIR_coefs(&filtro2);
//	calc_FIR_coefs(&filtro3);

    //<><><><><><><><><><><><><><><><><>//
    // 			 LOAD FILE 				//
    //<><><><><><><><><><><><><><><><><>//
    load_signal(&signal1,argv[8]);

    //<><><><><><><><><><><><><><><><><>//
    // 		 SIGNAL REPLICATION 		//
    //<><><><><><><><><><><><><><><><><>//
    signal1_output.lenght=signal1.lenght;
//	signal2_output.lenght=signal1.lenght;
//	signal3_output.lenght=signal1.lenght;
    signal1_output.signal=(int*) malloc (sizeof(int)*signal1.lenght);
//	signal2_output.signal=(int*) malloc (sizeof(int)*signal1.lenght);
//	signal3_output.signal=(int*) malloc (sizeof(int)*signal1.lenght);

    //<><><><><><><><><><><><><><><><><>//
    // 			START TIMER				//
    //<><><><><><><><><><><><><><><><><>//
    alt_write_word(h2p_start_timer_addr, 1 );  //0:ligh, 1:unlight

    //<><><><><><><><><><><><><><><><><>//
    // APPLY FILTER & NORMALIZE SIGNAL	//
    //<><><><><><><><><><><><><><><><><>//
    normalize_signal( &signal1, 128);
    apply_FIR_whole_signal(&filtro, &signal1, &signal1_output);
    normalize_signal( &signal1_output, 128);
//	apply_FIR_whole_signal(&filtro2, &signal1_output, &signal2_output);
//	normalize_signal( &signal2_output, 128);
//	apply_FIR_whole_signal(&filtro3, &signal2_output, &signal3_output);
//	normalize_signal( &signal3_output, 128);

    //<><><><><><><><><><><><><><><><><>//
    // 		   GET TICK <TIMER>			//
    //<><><><><><><><><><><><><><><><><>//
    int time_cont;
    time_cont = alt_read_word(p2h_get_tick_addr);
    printf("valor del timer: %d\n",time_cont);

    //<><><><><><><><><><><><><><><><><>//
    // 		   TIMER SHUTDOWN			//
    //<><><><><><><><><><><><><><><><><>//
    alt_write_word(h2p_start_timer_addr, 0 );

    save_signal( &signal1_output, argv[9]);
//	save_signal( &signal2_output, "filtrito2.bin");
//	save_signal( &signal3_output, "filtrito3.bin");

    printf("Finalizando Ejecucion.\n");
    return 0;
}
Exemplo n.º 4
0
int main()
{
	struct timeval t1, t2;
    double elapsedTime;
	
//	init_system();

	FIR_filter filtro;
	SIGNAL signal1;
	SIGNAL signal1_output;
	SIGNAL signal2_output;

	filtro.F1=100;
	filtro.F2=3500;
	filtro.order=200;
	filtro.FS=16000;
	filtro.window_type=4;
	filtro.filter_type=2;
	filtro.sw_hw=0;

	calc_FIR_coefs(&filtro);
	load_signal(&signal1,"voz.bin");

	//<><><><><><><><><><><><><><><><><>//
	// 		 SIGNAL REPLICATION 		//
	//<><><><><><><><><><><><><><><><><>//

	signal1_output.lenght=signal1.lenght;
	signal1_output.signal=(int*) malloc (sizeof(int)*signal1.lenght);

	signal2_output.lenght=signal1.lenght;
	signal2_output.signal=(int*) malloc (sizeof(int)*signal2_output.lenght);

	//<><><><><><><><><><><><><><><><><>//
	// APPLY FILTER & NORMALIZE SIGNAL	//
	//<><><><><><><><><><><><><><><><><>//

	normalize_signal(&signal1, 128);

	// start timer
    gettimeofday(&t1, NULL);

	apply_FIR_whole_signal(&filtro, &signal1, &signal1_output);
	
    // stop timer
    gettimeofday(&t2, NULL);

    // compute and print the elapsed time in millisec
    elapsedTime = (t2.tv_sec - t1.tv_sec) * 1000.0;      // sec to ms
    elapsedTime += (t2.tv_usec - t1.tv_usec) / 1000.0;   // us to ms
    printf ("%f ms.\n",elapsedTime);

	// start timer
    gettimeofday(&t1, NULL);
	
	apply_FIR_whole_signal_pthreads(&filtro, &signal1, &signal2_output);

    // stop timer
    gettimeofday(&t2, NULL);

    // compute and print the elapsed time in millisec
    elapsedTime = (t2.tv_sec - t1.tv_sec) * 1000.0;      // sec to ms
    elapsedTime += (t2.tv_usec - t1.tv_usec) / 1000.0;   // us to ms
    printf ("%f ms.\n",elapsedTime);

	normalize_signal(&signal1_output, 128);
	normalize_signal(&signal2_output, 128);

	save_signal(&signal1_output,"nonpthreads.bin");
	save_signal(&signal2_output,"pthreads.bin");

	printf("Finalizando Ejecucion.\n");
	return 0;
}