/* Event Reduction */ int event(){ int i, j, gl_flag; double f; static int m=0; if(!m){ evt_start(); m=1; } message(); #if 0 if(evt_blk()) return(-1); #endif dr_set(PROC_NUM[0], cflag ? childn:-1); /* child process number */ evt_time(); evt_scaler(); dr_set(BLOCK_ANA[0], ablk); if(dr_is_true(dr_get(EVENT_RCNP))){ /* Analyzer RCNP Data */ if(dr_is_true(dr_get(EVENT_BEND))){ /* Block-end Event */ }else{ evt_init_rcnp(); evt_ipr(); gl_flag = 0; /* for GR */ if(dr_is_true(dr_get(ANALYZE_GR))){ evt_init_gr(); evt_gr_adc(); evt_gr_tdc(); if(dr_is_true(dr_get(ANALYZE_GR_VDC))){ evt_chamb_gr(); evt_gr_kinema(); gl_flag++; } } /* for LAS */ if(dr_is_true(dr_get(ANALYZE_LAS))){ evt_init_las(); evt_las_adc(); evt_las_tdc(); if(dr_is_true(dr_get(ANALYZE_LAS_VDC))){ evt_chamb_las(); evt_las_kinema(); gl_flag++; } } if(gl_flag==2){ evt_gl_kinema(); } #if LAS_FPP_MWDC /* for LAS_FPP */ if(dr_is_true(dr_get(ANALYZE_LAS_FPP))){ evt_init_las_fpp(); evt_chamb_las_fpp(); } #endif #if NP_MWDC /* for NP */ if(dr_is_true(dr_get(ANALYZE_NP))){ evt_init_np(); evt_chamb_np(); } #endif /* for GR FPP */ if(dr_is_true(dr_get(ANALYZE_GR_FPP))){ evt_init_gr_fpp(); evt_gr_fpp_adc(); evt_gr_fpp_tdc(); evt_chamb_gr_fpp(); } } } #if F2_MWDC else if(dr_is_true(dr_get(EVENT_F2))){ /* Analyzer SMART F2 Data */ if(dr_is_true(dr_get(ANALYZE_F2))){ evt_init_f2(); evt_f2_adc(); evt_f2_tdc(); if(dr_is_true(dr_get(ANALYZE_F2_MWDC))){ evt_chamb_f2(); evt_f2_kinema(); } #if 0 evt_f2_3377(); #endif } } #endif show_debug(); dst_write_data(); if(rootflag == 1) root_write_data(); dr_set(ANALYZED,1); #if 0 sleep(1); #endif return(0); }
long long int l4trace_parse(FILE * f) { char line[256]; char *res; long long int current_time = -1; if (cpu_events == NULL) { cpu_events = (int *) malloc(MAX_CPUS * sizeof(int)); } if (last_pid_run == NULL) { int i; last_pid_run = (int *) malloc(MAX_CPUS * sizeof(int)); for (i = 0; i < MAX_CPUS; i++) { last_pid_run[i] = -1; } } res = fgets(line, sizeof(line), f); if (res) { //char taskc[24], to, tasko[24], cstate, ostate, sched[6]; char taskc[24]; char event[32]; //unsigned int cpul, cpur, cprio, oprio, opid, cpid; unsigned int cpu, current_pid; static int start; unsigned long us; int i = 0; current_time = 0; if (line[0] != '#') { cpu=1; //sscanf(line, "%[^[][%d]%lu.%lu:%s%[^!]", sscanf(line, "%s %s %lu", taskc, event, &us); dprintf("Task %s at %lu on CPU %d does %s\n", taskc, us, cpu, event); current_time=us; if (strcmp(taskc,"????")!=0) sscanf(taskc, "%x", ¤t_pid); else current_pid=0; if (start == 0) { start = 1; evt_start(current_time); for (i = 0; i < MAX_CPUS; i++) { create(current_time, 0, "idle\0", i); cpu_events[i] = 0; evt_initialize(0, i, current_time); } } if ((current_pid != 0) && (cpu_events[cpu] == 0)) { cpu_events[cpu] = 1; create(current_time, current_pid, taskc, cpu); last_pid_run[cpu] = current_pid; //Last pid scheduled evt_dispatch(0, current_pid, cpu, current_time); } dprintf("%s", line); trace(current_time, current_pid, taskc, cpu, event); //, taskc,previous_pid); previous_pid=current_pid; } } else { free(new_pids); free(cpu_events); free(last_pid_run); } return current_time; }