* cygheap.cc (cygheap_init): Add TODO comment.

This commit is contained in:
Corinna Vinschen 2007-01-15 11:01:23 +00:00
parent 5d1dd9308d
commit 5d93eb069e
3 changed files with 28 additions and 1 deletions

View File

@ -1,3 +1,7 @@
2007-01-14 Corinna Vinschen <corinna@vinschen.de>
* cygheap.cc (cygheap_init): Add TODO comment.
2007-01-14 Corinna Vinschen <corinna@vinschen.de>
* ntdll.h (STATUS_SHARING_VIOLATION): Define.

View File

@ -162,6 +162,29 @@ cygheap_init ()
if (!cygheap->sigs)
sigalloc ();
/* TODO: This is plain wrong. There's a difference between global shared
memory and every other global object. It's still allowed to
create any global object from a process not having the
SE_CREATE_GLOBAL_NAME privilege. It's only disallowed to create
global shared memory objects when not running in session 0 or
when not having the privilege.
The end result should look like this:
- All objects shared between multiple processes except shared
memory should always be created as global objects.
- Shared memory only needed locally should stick to being session
local.
- Every process should always try to create resp. open shared
memory as global.
- Only if that fails it should try to create the shared memory
as local shared memory, or ...
- ... the MS suggested workaround is to create a file backed shared
memory if a process has not the privilege to create global shared
memory.
However, this has to be planned carefully, especially given that
every single process creates its own (resp. the child's) shared
memory area with the process specific information. */
if (!cygheap->shared_prefix)
cygheap->shared_prefix = cstrdup (
wincap.has_terminal_services ()

View File

@ -1,6 +1,6 @@
/* ntdll.h. Contains ntdll specific stuff not defined elsewhere.
Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006 Red Hat, Inc.
Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Red Hat, Inc.
This file is part of Cygwin.