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)); }
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); }
//======================================================================================= // 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; }
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; }