home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / bsd_srcs / sys / tests / benchmarks / bench-4.1 / seqpage.c < prev    next >
Encoding:
C/C++ Source or Header  |  1985-05-06  |  1.0 KB  |  56 lines

  1. /*
  2.  * Sequential page access benchmark.
  3.  */
  4. #include <sys/vadvise.h>
  5.  
  6. char    *valloc();
  7.  
  8. main(argc, argv)
  9.     char *argv[];
  10. {
  11.     register i, niter;
  12.     register char *pf, *lastpage;
  13.     int npages = 4096, pagesize, vflag = 0;
  14.     char *pages, *name;
  15.  
  16.     name = argv[0];
  17.     argc--, argv++;
  18. again:
  19.     if (argc < 1) {
  20. usage:
  21.         printf("usage: %s [ -v ] [ -p #pages ] niter\n", name);
  22.         exit(1);
  23.     }
  24.     if (strcmp(*argv, "-p") == 0) {
  25.         argc--, argv++;
  26.         if (argc < 1)
  27.             goto usage;
  28.         npages = atoi(*argv);
  29.         if (npages <= 0) {
  30.             printf("%s: Bad page count.\n", *argv);
  31.             exit(2);
  32.         }
  33.         argc--, argv++;
  34.         goto again;
  35.     }
  36.     if (strcmp(*argv, "-v") == 0) {
  37.         argc--, argv++;
  38.         vflag++;
  39.         goto again;
  40.     }
  41.     niter = atoi(*argv);
  42.     pagesize = getpagesize();
  43.     pages = valloc(npages * pagesize);
  44.     if (pages == (char *)0) {
  45.         printf("Can't allocate %d pages (%2.1f megabytes).\n",
  46.             npages, (npages * pagesize) / (1024. * 1024.));
  47.         exit(3);
  48.     }
  49.     lastpage = pages + (npages * pagesize);
  50.     if (vflag)
  51.         vadvise(VA_SEQL);
  52.     for (i = 0; i < niter; i++)
  53.         for (pf = pages; pf < lastpage; pf += pagesize)
  54.             *pf = 1;
  55. }
  56.