Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 11 Aug 1999 11:56:39 -0600
From:      Charles Randall <crandall@matchlogic.com>
To:        freebsd-hackers@FreeBSD.ORG
Cc:        Oleg Derevenetz <oleg@oleg.sani-c.vrn.ru>
Subject:   RE: mmap bug 
Message-ID:  <64003B21ECCAD11185C500805F31EC0303786B72@houston.matchlogic.com>

next in thread | raw e-mail | index | archive | help
Looks like Oleg made a mistake in posting the code. I saw an earlier version
of this in freebsd-questions and followed up with him.

I've appended the version I think he meant to include.

He's reporting this behavior with 3.2R. Runs fine with 'mmap -u', appears to
hang the machine on the second iteration (file "1") with 'mmap'.

Runs fine on Solaris 2.6 and Digital Unix 4.0D  -- with the exception of
filling the disk without "-u" :^).

He's trying to ask if this is a problem with the code in question or 3.2R's
mmap.

Charles

--- mmap.c ---
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/mman.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
 
main(int argc, char *argv[])
{
    int fd;
    int i;
    int len=1024*1024*10;  /*ie 10Mbytes*/
    caddr_t addr;
    char ttt[80];
    int bunlink = 0;

    if ( argc > 1 && strcmp(argv[1], "-u") == 0 ) {
      bunlink = 1;
    }
    printf("unlink files? %s\n", bunlink ? "YES" : "NO");
  
    for (i=0;;i++)
    {
    sprintf (ttt,"%d",i);
    printf("mmaping %ld byte region on file %s\n", len, ttt);
    fd=open(ttt,O_CREAT|O_RDWR,0666);
    if (fd<0)
    {
	printf("open error %ld\n",errno);
	exit(1);
    }
    lseek(fd,len-1,SEEK_SET);
    write(fd,"",1);
    addr=mmap(0,len,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
    if (addr==MAP_FAILED)
    {
	printf("mmap error %ld",errno);
	exit(1);
    }
    memset(addr,'x',len);
    if ( munmap(addr, len) != 0 ) {
      fprintf(stderr, "munmap failed\n");
      exit(EXIT_FAILURE);
    }
    close(fd);
    if ( bunlink ) unlink(ttt);
    }
}


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?64003B21ECCAD11185C500805F31EC0303786B72>