Problems with VirtualAlloc/Lock

Michael Ost most at museresearch.com
Tue Mar 15 13:04:11 CST 2005


On Tue, 2005-03-15 at 01:09, Alexandre Julliard wrote:
> Michael Ost <most at museresearch.com> writes:
> > will stop at 1,022,976k (1GB) on any wine machine. In winxp it goes up
> > to 2GB, as it ought to. 
> 
> That's a kernel limitation. If you hack the kernel to start allocating
> from lower addresses (or implement the syscall we discussed to let us
> specify the mmap range) you can get the full 2GB.

Could you point me to the kernel limitation? I can mmap() 2GB on an
unhacked 2.4.19 kernel with this loop:

int total = 0;
for (;;) {
  void* leak = mmap(0, 1048576, PROT_READ | PROT_WRITE, 
    MAP_PRIVATE | MAP_ANON, -1, 0);
  if (leak) {
    total += 1048576/1024;
    printf("Allocated %ldk\r", total);
  }
  else {
    printf("\n");
    perror("mmap");
    break;
  }
}

- mo

PS: When building this loop, I tried to copy the behavior of
wine_anon_mmap from libs/wine/mmap.c. But frankly I am new to mmap() and
wine memory management. So maybe I am missing something...?





More information about the wine-devel mailing list