/* Code covered under 3-Clause BSD License - see LICENSE file for details */ #include #include #include #include "conf.h" #define DEBUG 0 /* set to 1 to switch on */ int rand(); void usage(char *); void usage(name) char *name; { printf("usage: %s [ -p #pages ] [ #iterations ]\n", name); } int main(argc, argv) int argc; char *argv[]; { register int npages, pagesize, pn, i, niter; char *pages, *name; npages = DEFAULT_NPAGES; name = argv[0]; argc--, argv++; if ((argc < 2) || (argc > 2)) { usage(name); exit(1); } npages = atoi(*argv); if (npages <= 0) { printf("%s: bad number of pages\n", *argv); exit(2); } argc--, argv++; niter = atoi(*argv); pagesize = getpagesize(); pages = valloc(npages * pagesize); if (pages == (char *)0) { printf("cannot allocate %d pages (%2.1f megabytes)\n", npages, (npages * pagesize) / (1024. * 1024.)); } for (i = 0; i < niter; i++) { pn = random() % npages; if(DEBUG) printf("touch page %d\n", pn); pages[pagesize * pn] = 1; } return 0; }