
/* Code covered under 3-Clause BSD License - see LICENSE file for details */

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#include "conf.h"

void	usage(char *);


void
usage(name)
	char	*name;
{
	printf("usage: %s [ #pages ] [ #iterations ]\n", name);
}


int
main(argc, argv)
	int	argc;
	char	*argv[];
{
	register int i, niter;
	register char *pf, *lastpage;
	int npages, pagesize, vflag;
	char *pages, *name;

	npages = DEFAULT_NPAGES;
	vflag = 0;

	name = argv[0];
	argc--, argv++;

	if ((argc < 2) || (argc > 2)) { 
		usage(name);
		exit(1);
	}

	npages = atoi(*argv);

	if (npages <= 0) {
		printf("%s: bad page count\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.));
		exit(3);
	}

	lastpage = pages + (npages * pagesize);

	for (i = 0; i < niter; i++)
		for (pf = pages; pf < lastpage; pf += pagesize)
			*pf = 1;
	return 0;
}

