Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2007-01-15 14:01:23 +0300
committerCorinna Vinschen <corinna@vinschen.de>2007-01-15 14:01:23 +0300
commit5d93eb069ea8590893ce7961e9bb00123905271f (patch)
tree2dd9ebeed31b9e0757ced0674f7c665279be8d16 /winsup/cygwin/cygheap.cc
parent5d1dd9308d891fe788af00b07218cc01e0983b8d (diff)
* cygheap.cc (cygheap_init): Add TODO comment.
Diffstat (limited to 'winsup/cygwin/cygheap.cc')
-rw-r--r--winsup/cygwin/cygheap.cc23
1 files changed, 23 insertions, 0 deletions
diff --git a/winsup/cygwin/cygheap.cc b/winsup/cygwin/cygheap.cc
index caeda7b3a..c55dce9d4 100644
--- a/winsup/cygwin/cygheap.cc
+++ b/winsup/cygwin/cygheap.cc
@@ -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 ()