This is the mail archive of the cygwin-developers@sourceware.cygnus.com mailing list for the Cygwin project. See the Cygwin home page for more information.
Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: cygwin1.dll startup and GDB



> 	Either way, mapname will be NULL since NULL is being passed as the
> first parameter to open_shared.

Not always.  When NULL is passed, we musn't call OpenFileMapping(),
because it doesn't fail gracefully when passed NULL.

There are three cases this code handles:

* name==NULL - create a private shared memory area

* name!=NULL, area doesn't exist - create a public named area

* name!=NULL, area does exist - attach to existing public named area

> My understanding ( misunderstanding :) ) was that with OpenFileMapping()
> a name for the shared memory was needed.  However, we are passing a NULL
> pointer to it instead...

Not always.  Sometimes we pass a name.  When we pass a name, we try
OpenFileMapping() to see if the area exists (was created by another
process, for example).  If the area doesn't exist, we drop through and
try creating it.  If we pass NULL, we will always be creating the area
anyway, so skip the open and go right to the create.

> Is OpenFileMappingA() different.  I only have a reference for
> OpenFileMapping().

FooA() and FooW() are the ascii/wchar variants of Foo().  Windows
macros normally hide them.