I'm wondering why munmap insists on operating with chunks of size 64k
instead of pages of size 4k. In other words, what would go wrong if we
did the following:
--- a/winsup/cygwin/mm/mmap.cc
+++ b/winsup/cygwin/mm/mmap.cc
@@ -1143,7 +1143,7 @@ munmap (void *addr, size_t len)
set_errno (EINVAL);
return -1;
}
- const size_t pagesize = wincap.allocation_granularity ();
+ const size_t pagesize = wincap.page_size ();
if (((uintptr_t) addr % pagesize) || !len)
{
set_errno (EINVAL);
I'm currently testing a build with this patch, and so far I haven't seen
any problems. But maybe I don't know what to test.
Ken