* shared_info.h (shared_destroy): Declare.

* shared.cc (shared_destroy): Define new function to destroy shared memory
regions.
* init.cc (dll_entry): Call shared_destroy when dll detaches from the process.
This commit is contained in:
Christopher Faylor 2008-07-27 14:52:46 +00:00
parent bfd2b1c930
commit 904413e731
4 changed files with 22 additions and 1 deletions

View File

@ -1,3 +1,11 @@
2008-07-27 Christopher Faylor <me+cygwin@cgf.cx>
* shared_info.h (shared_destroy): Declare.
* shared.cc (shared_destroy): Define new function to destroy shared
memory regions.
* init.cc (dll_entry): Call shared_destroy when dll detaches from the
process.
2008-07-27 Corinna Vinschen <corinna@vinschen.de>
* fhandler_socket.cc (fhandler_socket::send_internal): Send never more

View File

@ -12,6 +12,7 @@ details. */
#include "winsup.h"
#include "cygtls.h"
#include "ntdll.h"
#include "shared_info.h"
static DWORD _my_oldfunc;
@ -142,6 +143,8 @@ dll_entry (HANDLE h, DWORD reason, void *static_load)
_my_oldfunc = TlsAlloc ();
break;
case DLL_PROCESS_DETACH:
if (dynamically_loaded)
shared_destroy ();
break;
case DLL_THREAD_ATTACH:
if (hwait_sig)

View File

@ -254,6 +254,15 @@ user_shared_initialize (bool reinit)
}
}
void __stdcall
shared_destroy ()
{
ForceCloseHandle (cygwin_shared_h);
UnmapViewOfFile (cygwin_shared);
ForceCloseHandle (cygwin_user_h);
UnmapViewOfFile (user_shared);
}
/* Use absolute path of cygwin1.dll to derive the Win32 dir which
is our installation root. Note that we can't handle Cygwin installation
root dirs of more than 4K path length. I assume that's ok... */

View File

@ -120,7 +120,7 @@ public:
#define SHARED_INFO_CB 39328
#define CURR_SHARED_MAGIC 0x22f9ff0bU
#define CURR_SHARED_MAGIC 0x398d8baU
/* NOTE: Do not make gratuitous changes to the names or organization of the
below class. The layout is checksummed to determine compatibility between
@ -164,6 +164,7 @@ enum shared_locations
};
void __stdcall memory_init ();
void __stdcall shared_destroy ();
#define shared_align_past(p) \
((char *) (system_info.dwAllocationGranularity * \