示例#1
0
/* 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);
}
示例#2
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", &current_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;
}