|
|
1.1 ! root 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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.