]> git.kaiwu.me - nginx.git/commit
Win32: shared memory base addresses and remapping.
authorMaxim Dounin <mdounin@mdounin.ru>
Mon, 27 Apr 2015 15:25:42 +0000 (18:25 +0300)
committerMaxim Dounin <mdounin@mdounin.ru>
Mon, 27 Apr 2015 15:25:42 +0000 (18:25 +0300)
commit2ec8cfcd7d34415a99c3f3db3024ae954c00d0dd
treeb45488fb7b4cc984e984cbb41ba6b9198dcdc32c
parent153dbf38771abbbf5955cce0433cf2673dc3e7d9
Win32: shared memory base addresses and remapping.

Two mechanisms are implemented to make it possible to store pointers
in shared memory on Windows, in particular on Windows Vista and later
versions with ASLR:

- The ngx_shm_remap() function added to allow remapping of a shared memory
  zone to the address originally used for it in the master process.  While
  important, it doesn't solve the problem by itself as in many cases it's
  not possible to use the address because of conflicts with other
  allocations.

- We now create mappings at the same address in all processes by starting
  mappings at predefined addresses normally unused by newborn processes.

These two mechanisms combined allow to use shared memory on Windows
almost without problems, including reloads.

Based on the patch by Sergey Brester:
http://mailman.nginx.org/pipermail/nginx-devel/2015-April/006836.html
src/core/ngx_cycle.c
src/os/win32/ngx_shmem.c
src/os/win32/ngx_shmem.h
src/os/win32/ngx_win32_init.c