From owner-FreeBSD-tech-jp@jp.freebsd.org  Thu Aug 26 19:25:02 1999
Received: (from daemon@localhost)
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) id TAA60039;
	Thu, 26 Aug 1999 19:25:02 +0900 (JST)
	(envelope-from owner-FreeBSD-tech-jp@jp.FreeBSD.org)
Received: from nsx.kgc.co.jp (nsx.kgc.co.jp [210.226.77.146])
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) with SMTP id TAA60027
	for <FreeBSD-tech-jp@jp.freebsd.org>; Thu, 26 Aug 1999 19:25:00 +0900 (JST)
	(envelope-from candy@kgc.co.jp)
Received: (qmail 35661 invoked from network); 26 Aug 1999 19:24:55 +0900
Received: from ssm.kgc.co.jp (@210.226.77.148)
  by nsx.kgc.co.jp with SMTP; 26 Aug 1999 19:24:55 +0900
Received: (qmail 99637 invoked from network); 26 Aug 1999 19:24:55 +0900
Received: from xxx.kgc.co.jp (172.31.2.3)
  by ssm.kgc.co.jp with SMTP; 26 Aug 1999 19:24:55 +0900
Received: from localhost by xxx.kgc.co.jp (8.9.3/3.3W8:95062916) id TAA00923; Thu, 26 Aug 1999 19:24:55 +0900 (JST)
To: FreeBSD-tech-jp@jp.freebsd.org
X-Mailer: Mew version 1.93 on Emacs 19.34 / Mule 2.3 (SUETSUMUHANA)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit
Message-Id: <19990826192454T.candy@kgc.co.jp>
Date: Thu, 26 Aug 1999 19:24:54 +0900
From: candy <candy@kgc.co.jp>
X-Dispatcher: imput version 980905(IM100)
Lines: 91
Reply-To: FreeBSD-tech-jp@jp.freebsd.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+990727
X-Sequence: FreeBSD-tech-jp 2467
Subject: [FreeBSD-tech-jp 2467] mmap(2)/FreeBSD 3.2R
Errors-To: owner-FreeBSD-tech-jp@jp.freebsd.org
Sender: owner-FreeBSD-tech-jp@jp.freebsd.org
X-Originator: candy@kgc.co.jp

$B2<5-$N%W%m%0%i%`$G!"(Bmmap(2) $B$7$?NN0h$K=q$-9~$_B3$1$k$H!"$[$\3N<B$K(B 
FreeBSD $B$,Dd;_$7$F$7$^$$$^$9(B($B5c(B)$B!#$J$s$H$+2sHr$9$kJ}K!$O$"$j$^$;$s$+(B??

$B$3$A$i$G$O(B 2.2.8R $B$@$H:F8=$7$^$;$s!#(B3.2R $B$N%P%0$G$7$g$&$+(B? (GNATS $B$K$O(B
$B$=$l$i$7$$$N$O8+Ev$?$i$J$$$h$&$G$9!#(B)

Release: FreeBSD 3.2-RELEASE i386 (GENERIC kernel)
$B4D6-(B:	$B<B%a%b%j(B 128M byte
	mount $B%*%W%7%g%s$O%G%U%)%k%H$N$^$^$G$9!#(B

$B:F8=J}K!(B: $B2<5-%W%m%0%i%`$r(B ./foo 200000000 $B$G5/F0$9$k!#(B
$B;_$^$i$J$$$h$&$@$C$?$i!"%Q%i%a!<%?$N?tCM$rEk:\%a%b%j$h$jBg$-$/$7$?$j!"(B
tmp $B$H$$$&%U%!%$%k$r:o=|$7$F:F<B9T$7$F$_$F$/$@$5$$!#(B

ping(8) $B$KJV;v$r$7$?$j!"%3%s%=!<%k$N%-!<$N%(%3!<%P%C%/$O$"$C$?$j$9$k$N(B
$B$G!"%+!<%M%k$=$N$b$N$,;`$s$G$$$k$o$1$G$O$J$$$h$&$G$9!#(B(NFS $B$,;I$5$C$?(B
$B;~$N>uBV$,!"A4%W%m%;%9$G5/$-$F$$$k46$8(B?)

--------8<----------------8<--------
/*
 */
#include <stdio.h>
#include <stdlib.h>

#include <fcntl.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/mman.h>

static int mmap_fd;

static void *
alloc_vm(size_t size)
{
	void *p = NULL;
	mmap_fd = open("tmp", O_RDWR | O_CREAT, 0644);
	if (mmap_fd < 0)
		perror("open");
	else {
		if (lseek(mmap_fd, size, SEEK_SET) < 0)
			perror("lseek");
		else if (write(mmap_fd, " ", 1) < 0)
			perror("write");
		else {
			p = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, mmap_fd, 0);
			if (p == MAP_FAILED) {
				perror("mmap");
				p = NULL;
			}
		}
		if (p != NULL) {
			close(mmap_fd);
			mmap_fd = -1;
		}
	}
	return p;
}

static int
nain(size_t size)
{
	void *p = alloc_vm(size);
	if (p != NULL) {
		unsigned char *q = p;
		size_t i;
		for (i = 0; i < size; i++) {
			if ((i & (1024 * 1024 - 1)) == 0)
				printf("%d\n", i);
			q[i] = 0xff;
		}
		printf("ok\n");
	}
	if (mmap_fd >= 0)
		close(mmap_fd);
	return 0;
}

int
main(int argc, char *argv[])
{
	if (argc != 2)
		fprintf(stderr, "usage: %s size\n", argv[0]);
	else {
		size_t x = strtol(argv[1], NULL, 0);
		nain(x);
	}
	return 0;
}
--------8<----------------8<--------

$B?@EDIR9-(B <candy@kgc.co.jp>
