Пример #1
0
void access_file() {
	int i;
	bytes_read = 0;
	bytes_write = 0;
	read_time = 0;
	write_time = 0;
	char buf[4096];
	for(i = 0; i<N_ACCESSES; i++){
		int rw = rand()%100 + 1;
		char file[256];
		int fsize = gen_file(file);
		//printf("got file %s\n", file);
		clock_t start, stop;
		if(rw <= P_READS){ //read
			start = clock();
			int fd = open(file, O_RDONLY);
			if(fd == -1){
				printf("%d couldn't open %s\n", i, file);
				perror("error ");
				break;
			}
			int totalRead = 0;
			int numRead = read(fd, buf, 4096);
			if(numRead == 1) hits++;
			if(numRead == 0) misses++;
			if(numRead == -1) printf("read error\n");
			//totalRead += numRead;
			//while(numRead > 0){
			//	numRead = read(fd, buf, 4096);
			//	totalRead += numRead;
			//}
			stop = clock();
			double time_e = (double)(stop-start);
			//printf("read %d of %d in %lf\n", totalRead, fsize, time_e);
			bytes_read+=fsize;	
			read_time +=time_e;
			close(fd);
		}
		else{ //write
			start = clock();
			int fd = open(file, O_WRONLY);
			if(fd == -1){
				printf("couldn't open\n");
				perror("error ");
			}
			int numWrite = fsize;
			//while(numWrite > 0){
				numWrite -= write(fd, buf, 4096);
			//}
			stop = clock();
			double time_e = (double)(stop-start);
			//printf("wrote %d in %lf\n", fsize, time_e);
			//bytes_write+=fsize;
			writes++;
			write_time+=time_e;
			close(fd);
		}
	}
}
Пример #2
0
static void
bhv_setTag(struct Behavior *bhv)
{
  if (bhv->Object.Any._id) { // generics case
    struct Generic *gen = CAST(struct Generic*, bhv);

    if (bhv->id)
      cos_abort("generic '%s' at (%s,%d) has already an id",
                gen_name(gen), gen_file(gen), gen_line(gen));

    if ( (bhv->Object.Any._id & COS_ID_TAGMSK) )
      cos_abort("generic '%s' at (%s,%d) has invalid initialization",
                gen_name(gen), gen_file(gen), gen_line(gen));

    bhv->id = bhv->Object.Any._id | bhv_tag();
    bhv->Object.Any._id = 0;

  } else {              // classes case
Пример #3
0
void gen_expr_str_str(expr *e)
{
	FILE *f = gen_file();
	stringlit *lit = e->bits.strlit.lit_at.lit;

	idt_printf("%sstring at %s\n", lit->wide ? "wide " : "", lit->lbl);
	gen_str_indent++;
	idt_print();

	literal_print(f,
			e->bits.strlit.lit_at.lit->str,
			e->bits.strlit.lit_at.lit->len);

	gen_str_indent--;
	fputc('\n', f);
}
Пример #4
0
//generate the html documents for this
//site, in docs/0/, docs/1000/, ... directories
void gen_docs() {
  int start_doc = siteno * filespersite;
  int end_doc = start_doc + filespersite;
  int i;
  char docname[200];
  char subdir[10], cmd[30];
  char progress[200];

  sprintf(subdir, "0");
  system ("mkdir -p docs/0/");
  for (i = start_doc; i < end_doc; i++) {
    if (0 && i%100==0 ) //|| (i-start_doc > 20000))
      {
	sprintf(progress, "echo 'writing doc %d' >> /scratch/report.txt",(i-start_doc));
	system(progress); 
      }
       if ((i % 5000) == 0) {
      printf("Writing doc %d\n", i - start_doc);
      sprintf(subdir, "%d", i);
      sprintf(cmd, "mkdir -p docs/%s/", subdir);
      system(cmd);
      }
    
    sprintf(docname,"docs/%s/%s", subdir,urls[i]+7);
    if ( 0 && i -start_doc >= 20800 )
      {
	sprintf(progress, "echo 'writing doc %s' >> /scratch/report.txt",(char*)docname);
	system(progress); 
      }
      gen_file(docname, (i-start_doc));
    if ( 0 && i -start_doc >= 20800 )
      {
	sprintf(progress, "echo 'DONE %s' >> /scratch/report.txt",(char*)docname);
	system(progress); 
      }
  }
}
Пример #5
0
int main(int argc, char**argv)
{
  int ret = 1;


  if (argc < 2)
  {
    std::cerr
      << "No parameters given\n"
      << "Usage:\n"
      << "xml2ulxr [--gen-server]\n"
      << "         [--gen-client]\n"
      << "         [--gen-class=class-name]\n"
      << "         [--gen-funcs=prefix]\n"
      << "         [--file-name=filename.ext]\n"
      << "         [--dest-dir=dest-path]\n"
      << "         [--disable-timestamp\n"
      << "\n";
    return 1;
  }

  std::vector<std::string> classes;

  for (int i = 1; i < argc; ++i)
  {
    std::string arg = argv[i];
    if (arg == "--gen-server")
      gen_server = true;

    else if (arg == "--gen-client")
      gen_client = true;

    else if (arg.substr(0, 12) == "--gen-class=")
      classes.push_back(arg.substr(12));

    else if (arg.substr(0, 12) == "--gen-funcs=")
    {
      funcsname = arg.substr(12);
      gen_funcs = true;
    }

    else if (arg.substr(0, 12) == "--file-name=")
      sourcename = arg.substr(12);

    else if (arg.substr(0, 11) == "--dest-dir=")
      destdir = arg.substr(11);

    else if (arg == "--disable-timestamp")
      GenerateMethod::setDateOutput(false);

    else
    {
      std::cerr << "Unknown option: " << arg << std::endl;
      return 1;
    }
  }

  if (sourcename.length() == 0)
  {
    std::cerr << "No source file given\n";
    return 1;
  }

  std::FILE *fs;
  fs = std::fopen (sourcename.c_str(), "r");

  if (fs == 0)
  {
    std::cerr << "File not readable: " << sourcename << std::endl;
    return 2;
  }

  char buffer[1000];

  UlxrIdlParser parser;
  try
  {
    while (!feof(fs))
    {
      unsigned readed = std::fread(buffer, 1, sizeof(buffer), fs);
      if (!parser.parse(buffer, readed, false))
      {
        throw XmlException(parser.mapToFaultCode(parser.getErrorCode()),
                          "Problem while parsing idl file",
                          parser.getCurrentLineNumber(),
                          parser.getErrorString(parser.getErrorCode()));
      }
    }
    ret = 0;
  }

  catch(std::exception &ex)
  {
    std::cerr << ex.what() << std::endl;
    ret = 1;
  }

  catch(...)
  {
    std::cerr << "Unexpected problem while parsing idl file\n";
    ret = 1;
  }

  fclose(fs);

  if (ret != 0)
    return ret;

  try
  {
    for (unsigned ii = 0; ii < parser.numClasses(); ++ii)
    {
//    std::cout << "Class available: " << parser.getClass(ii).getName() << std::endl;

      if (classes.size() == 0)
        gen_file(parser.getClass(ii));

      else
      {
        for (unsigned ic = 0; ic < classes.size(); ++ic)
        {
          if (classes[ic] == parser.getClass(ii).getName())
            gen_file(parser.getClass(ii));
          else
            std::cout << "Skipping class: " << parser.getClass(ii).getName() << std::endl;
        }
      }
    }

    gen_functions(parser.getFunctions());

    ret = 0;
  }

  catch(std::exception &ex)
  {
    std::cerr << ex.what() << std::endl;
    ret = 2;
  }

  catch(...)
  {
    std::cerr << "Unexpected problem while generating mock files\n";
    ret = 2;
  }

  return ret;
}
Пример #6
0
void gen_expr_style_str(expr *e)
{
	literal_print(gen_file(),
			e->bits.strlit.lit_at.lit->str,
			e->bits.strlit.lit_at.lit->len);
}