コード例 #1
0
ファイル: io.c プロジェクト: alejandroerickson/inrflow-mirror
void read_applications_from_file(char *file){

    FILE *fd;
    long i;
    char pattern[50];
    char *pattern_aux;
    long servers = get_servers();
    application app;

    app.info.start_time = 0;
    app.info.end_time = 0;
    app.info.n_flows = 0;
    app.info.flows_distance = 0;
    app.info.flows_latency = 0;
    app.packets = 8192;
    app.comp_time = 10;
    app.phases = 1;
    app.running = 0;
    app.tasks_finished = 0;
    app.info.id = 1;

    if((fd = fopen(file, "r")) == NULL){
        printf("Error opening the workload file.\n");  
        exit(-1);
    }

    while(!feof(fd)){  
        fscanf(fd,"%llu %s %ld %s\n",&app.info.arrive_time, pattern, &app.size, app.allocation_type); 
        if(app.size > servers){
            printf("WARNING: Application %ld with size %ld is larger than the network: %ld.\n",app.info.id,app.size, servers);
            exit(-1);
        } 
        pattern_aux = strtok(pattern, "_");
        if(!literal_value(tpatterns_l, pattern_aux, (int *) &app.pattern)) {
            printf("Error: Unknown traffic pattern - %s\n", pattern_aux);
            exit(-1);
        }
        app.pattern_nparam=0;
        if(app.pattern == FILE_PATTERN){
            pattern_aux = strtok(NULL, "_");
            sscanf(pattern_aux, "%s", app.pattern_file);
        }
        
            while ( (pattern_aux = strtok(NULL, "_")) && app.pattern_nparam < MAX_TRAFFIC_PARAMS){
                app.pattern_params[app.pattern_nparam++] = atoi(pattern_aux);
            }
        
        for (i = app.pattern_nparam; i < MAX_TRAFFIC_PARAMS; i++)
            app.pattern_params[i] = -1; // undefine values, should not be checking these anyway.

        if(!literal_value(allocation_l, app.allocation_type, (int *) &app.allocation)) {
            printf("Error: Unknown allocation pattern - %s\n", app.allocation_type);
            exit(-1);
        }
        app.phases = app.pattern_params[0];
        list_append(&workload, &app);
        app.info.id++;
    }  
    fclose(fd);
}
コード例 #2
0
/**
* Gets an option & its value.
*
* Put the value to the FSIN variable.
* @param option The string which contains an option=value
*/
void get_option(char * option) {
	long opt;
	char * name;
	char * value;
	char * param;
	char * sep=" _";
	char message[100];

	name = strtok(option, "=");
	if(!literal_value(options_l, name, &opt)) {
		sprintf(message, "get_option: Unknown option %s", name);
		panic(message);
	}
	value = strtok(NULL, "=");
	switch(opt) {
	case 2:
		sscanf(value, "%lf", &bg_load);
		break;
	case 3:
		param = strtok(value, sep);
		if (param)
			pkt_len = atoi(param);
		param = strtok(NULL, sep);
		if (param)
			phit_size = atoi(param);
		break;
	case 4:
		if(!literal_value(pattern_l, value, (long *) &pattern))
			panic("get_conf: Unknown traffic pattern");
		break;
	case 5:
		sscanf(value, "%lf", &load);
		break;
	case 6:
		param = strtok(value, sep);
		if(!literal_value(topology_l, param, (long *) &topo))
			panic("get_conf: Unknown topology");
		if(topo<DIRECT){
			param = strtok(NULL, sep);
			if (param) {
				nodes_x = atoi(param);
				ndim = 1;
			}
			param = strtok(NULL, sep);
			if (param) {
				nodes_y = atoi(param);
				ndim = 2;
			}
			param = strtok(NULL, sep);
			if (param) {
				nodes_z = atoi(param);
				ndim = 3;
			}
		}
		else if (topo==FATTREE){
			param = strtok(NULL, sep);
			if (param) radix = atoi(param);
			param = strtok(NULL, sep);
			if (param) nstages = atoi(param);
			stDown=stUp=radix;
			radix=2*radix;
		}
		else if (topo==SLIMTREE || topo==THINTREE){
			param = strtok(NULL, sep);
			if (param) stDown = atoi(param);
			param = strtok(NULL, sep);
			if (param) stUp = atoi(param);
			param = strtok(NULL, sep);
			if (param) nstages = atoi(param);
			radix = stDown+stUp;
		}
		else if (topo==ICUBE){
			param = strtok(NULL, sep);
			if (param) {
				stDown = nodes_per_switch = atoi(param);
			}
			param = strtok(NULL, sep);
			if (param) {
				links_per_direction = atoi(param);
			}
			param = strtok(NULL, sep);
			if (param) {
				nodes_x = atoi(param);
				ndim=1;
			}
			param = strtok(NULL, sep);
			if (param) {
				nodes_y = atoi(param);
				ndim=2;
			}
			else nodes_y=1;
			param = strtok(NULL, sep);
			if (param) {
				nodes_z = atoi(param);
				ndim=3;
			}
			else
				nodes_z=1;
		}
		break;
	case 7:
	case 8:
	case 9:
		panic("The Correct Syntax is now \"topo=<direct_topology>_<nodes_x>_<nodes_y>_<nodes_z>\" ");
		break;
	case 10:
		if(!literal_value(vc_l, value, (long *) &vc_management))
			panic("get_conf: Unknown vc management");
		break;
	case 11:
		if(!literal_value(routing_l, value, (long *) &routing))
			panic("get_conf: Unknown routing");
		break;
	case 12:
		if(!literal_value(rmode_l, value, (long *) &req_mode))
			panic("get_conf: Unknown request mode");
		break;
	case 13:
		param = strtok(value, sep);
		bub_x = bub_y = bub_z = 2;
		if (param)
			bub_y = bub_z = bub_x = atoi(param);
		param = strtok(NULL, sep);
		if (param)
			bub_z = bub_y = atoi(param);
		param = strtok(NULL, sep);
		if (param)
			bub_z = atoi(param);
		break;
	case 14:
		if(!literal_value(atype_l, value, (long *) &arb_mode))
			panic("get_conf: Unknown arbitration mode");
		break;
	case 15:
		if(!literal_value(ctype_l, value, (long *) &cons_mode))
			panic("get_conf: Unknown consumption mode");
		break;
	case 16:
		sscanf(value, "%ld", &plevel);
		break;
	case 17:
		sscanf(value, "%ld", &pheaders);
		if (pheaders>2047)
			panic("get_conf: Invalid partial header value");
		break;
	case 18:
		sscanf(value, "%ld", &bheaders);
		if (pheaders>8191)
			panic("get_conf: Invalid batch header value");
		break;
	case 19:
		sscanf(value, "%ld", &r_seed);
		break;
	case 20:
		sscanf(value, "%ld", &buffer_cap);
		break;
	case 21:
		sscanf(value, "%ld", &binj_cap);
		break;
	case 22:
		sscanf(value, "%s", &file);
		break;
	case 23:
		sscanf(value, "%s", &trcfile);
		break;
	case 24:
		sscanf(value, "%" SCAN_CLOCK, &pinterval);
		break;
	case 25:
		sscanf(value, "%ld", &nways);
		break;
	case 26:
		sscanf(value, "%ld", &nchan);
		break;
	case 27:
		sscanf(value, "%ld", &ninj);
		break;
	case 28:
		sscanf(value, "%" SCAN_CLOCK, &timeout_upper_limit);
		break;
	case 29:
		sscanf(value, "%" SCAN_CLOCK, &timeout_lower_limit);
		break;
	case 30:
		sscanf(value, "%ld", &extract);
		break;
	case 31:
		sscanf(value, "%ld", &monitored);
		break;
	case 32:
		if(!literal_value(injmode_l, value, (long *) &inj_mode))
			panic("get_conf: Unknown injection mode");
		break;
	case 33:
		sscanf(value, "%lf", &intransit_pr);
		break;
	case 34:
		sscanf(value, "%d", &drop_packets);
		if (drop_packets)
			drop_packets = TRUE;
		break;
	case 35:
		sscanf(value, "%ld", &bub_adap[1]);
		break;
	case 36:
		sscanf(value, "%d", &parallel_injection);
		if (parallel_injection)
			parallel_injection = TRUE;
		break;
	case 37:
		sscanf(value, "%d", &shotmode);
		if (shotmode)
			shotmode = TRUE;
		break;
	case 38:
		sscanf(value, "%ld", &shotsize);
		break;
	case 39:
		sscanf(value, "%" SCAN_CLOCK, &update_period);
		break;
	case 40:
		sscanf(value, "%lf", &global_cc);
		break;
	case 41:
		sscanf(value, "%ld", &sk_xy);
		break;
	case 42:
		sscanf(value, "%ld", &sk_xz);
		break;
	case 43:
		sscanf(value, "%ld", &sk_yx);
		break;
	case 44:
		sscanf(value, "%ld", &sk_yz);
		break;
	case 45:
		sscanf(value, "%ld", &sk_zx);
		break;
	case 46:
		sscanf(value, "%ld", &sk_zy);
		break;
	case 47:
		sscanf(value, "%" SCAN_CLOCK, &warm_up_period);
		break;
	case 48:
		sscanf(value, "%" SCAN_CLOCK, &conv_period);
		break;
	case 49:
		sscanf(value, "%lf", &threshold);
		break;
	case 50:
		sscanf(value, "%" SCAN_CLOCK, &max_conv_time);
		break;
	case 51:
		sscanf(value, "%d", &samples);
		break;
	case 52:
		sscanf(value, "%" SCAN_CLOCK, &batch_time);
		break;
	case 53:
		sscanf(value, "%d", &min_batch_size);
		break;
	case 54:
		param = strtok(value, sep);
		if(!literal_value(placement_l, param, (long *) &placement))
			panic("get_conf: Unknown placement mode");
		if (placement==SHIFT_PLACE){
			param = strtok(NULL, sep);
			if (param)
				shift = atoi(param);
			else
				shift=0;
		}
        if (placement==ICUBE_PLACE){
			param = strtok(NULL, sep);
			if (param)
				pnodes_x = atoi(param);
			else
				pnodes_x = 1;
   			param = strtok(NULL, sep);
			if (param)
				pnodes_y = atoi(param);
			else
				pnodes_y = 1;
			param = strtok(NULL, sep);
			if (param)
				pnodes_z = atoi(param);
			else
				pnodes_z = 1;
		}
		if (placement==FILE_PLACE){
			param = strtok(NULL, sep);
			if (param)
				strcpy(placefile, param);
			else
				panic("placement from file requires a placement file");
		}
		param = strtok(NULL, sep);
		if (param)
			trace_nodes = atoi(param);
		else
			trace_nodes = 0;
		param = strtok(NULL, sep);
		if (param)
			trace_instances = atoi(param);
		else
			trace_instances=0;
		break;
	case 55:
#if (BIMODAL_SUPPORT != 0)
		sscanf(value, "%d", &msglength);
#endif /* BIMODAL */
		break;
	case 56:
#if (BIMODAL_SUPPORT != 0)
		sscanf(value, "%lf", &lm_percent);
#endif /* BIMODAL */
		break;
	case 58:
		sscanf(value, "%lf", &trigger_rate);
		break;
	case 59:
		param = strtok(value, sep);
		trigger_max = trigger_min = 0;
		if (param)
			trigger_max = trigger_min = atoi(param);
		param = strtok(NULL, sep);
		if (param)
			trigger_min = atoi(param);
		if (trigger_min>trigger_max){ // Just in case
			long aux;
			aux=trigger_min;
			trigger_min=trigger_max;
			trigger_max=aux;
		}
		break;
	case 60:
		sscanf(value, "%d", &faults);
		break;
#if (EXECUTION_DRIVEN != 0)
	case 100:
		sscanf(value, "%ld", &fsin_cycle_relation);
		break;
	case 101:
		sscanf(value, "%ld", &simics_cycle_relation);
		break;
	case 103:
		sscanf(value, "%ld", &serv_addr);
		break;
	case 104:
		sscanf(value, "%ld", &num_periodos_espera);
		break;
#else
	case 100:
	case 101:
	case 103:
	case 104:
		break;
#endif

	default:
		panic("Should not be here in get_option");
	}
}
コード例 #3
0
ファイル: pki.c プロジェクト: stesla/csci4700
static void pki_literals_callback(LITERAL *lit, void *data)
{
  FILE *out = (FILE *) data;
  fprintf(out, "L%i:\tda \"%s\"\n", literal_address(lit), literal_value(lit));
}