Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 07 Oct 1996 17:07:59 +0000
From:      Matt Thomas <matt@lkg.dec.com>
To:        hackers@freebsd.org
Cc:        Mikael Karpberg <karpen@ocean.campus.luth.se>
Subject:   Re: Optimizing bzero() 
Message-ID:  <199610071708.RAA20621@whydos.lkg.dec.com>
In-Reply-To: Your message of "Mon, 30 Sep 1996 10:33:14 %2B0200." <199609300833.KAA18915@ocean.campus.luth.se> 

next in thread | previous in thread | raw e-mail | index | archive | help

> According to Poul-Henning Kamp:
> > In message <199609250343.AA109333032@fakir.india.hp.com>, A JOSEPH KOSHY writes
> > :
> > >>>>> "phk" == "Poul-Henning Kamp" <phk@critter.tfs.com> writes
> > >
> > >phk> The next thing you could start to consider is when people realloc a
> > >phk> multipage allocation to something bigger, it would be nice to be able
> > >phk> to ask the kernel to "move these pages to this address" and then extend
> > >phk> It there instead of copying the contents.
> > >
> > >Makes sense; can this be done without major surgery though? How costly 
> > >would it be for malloc(3) to invoke a system call to re-arrange the
> > >address space compared to an memory allocation followed by a bcopy()? 
> > cheap(er).
> Can't you just make realloc do that? Is there a problem with doing it?
> If not, is there a way to tell the system to rearrange your address space?

I've always wanted to be able to use procfs for doing that.  Alas, procfs
doesn't support mmap operations.

#include <limits.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/mman.h>

static int x;
int
main(
    void)
{
    char fname[50];
    int fd;
    caddr_t ptr;

    sprintf(fname, "/proc/%05d", getpid());
    fd = open(fname, O_RDONLY);
    if (fd < 0) {
	perror(fname);
	exit(1);
    }

    errno = 0;
    ptr = mmap(NULL, getpagesize(),
	       PROT_READ, MAP_FILE|MAP_SHARED, fd,
	       ((off_t) &x) & ~getpagesize());
    if (ptr == (caddr_t) -1) {
	perror("mmap");
	exit(1);
    }
    printf("OK\n");
}

-- 
Matt Thomas               Internet:   matt@3am-software.com
3am Software Foundry      WWW URL:    http://www.3am-software.com/bio/matt.html
Westford, MA              Disclaimer: I disavow all knowledge of this message





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