#include	"unp.h"
#include	<sys/mman.h>

/*
 * Allocate an array of "nchildren" longs in shared memory that can
 * be used as a counter by each child of how many clients it services.
 * See pp. 467-470 of "Advanced Programming in the Unix Environment".
 */

long *
meter(int nchildren)
{
	int		fd;
	long	*ptr;

#ifdef	MAP_ANON
	ptr = Mmap(0, nchildren*sizeof(long), PROT_READ | PROT_WRITE,
			   MAP_ANON | MAP_SHARED, -1, 0);
#else
	fd = Open("/dev/zero", O_RDWR, 0);

	ptr = Mmap(0, nchildren*sizeof(long), PROT_READ | PROT_WRITE,
			   MAP_SHARED, fd, 0);
	Close(fd);
#endif

	return(ptr);
}


syntax highlighted by Code2HTML, v. 0.9.1