Jeff Trawick wrote:
>
> Jeff Trawick <[EMAIL PROTECTED]> writes:
>
> > Jim Jagielski <[EMAIL PROTECTED]> writes:
> >
> > > >diff -ur apache-1.3/src/main/http_main.c apache-1.3-cygwin/src/main/http_main.c
> > > >--- apache-1.3/src/main/http_main.c Wed Oct 17 14:45:30 2001
> > > >+++ apache-1.3-cygwin/src/main/http_main.c Tue Jan 1 16:05:19 2002
> > > >@@ -662,11 +662,17 @@
> > > > perror("pthread_mutexattr_init");
> > > > exit(APEXIT_INIT);
> > > > }
> > > >X-Mozilla-Status: 8009n has problems with this pthread call claiming that these
> > > >+ * are "Invalid arguements", Stipe Tolj <[EMAIL PROTECTED]>
> > > >+ */
> > > >+#if !defined(CYGWIN)
> > > > if ((errno = pthread_mutexattr_setpshared(&mattr,
> > > > PTHREAD_PROCESS_SHARED))) {
> > > > perror("pthread_mutexattr_setpshared");
> > > > exit(APEXIT_INIT);
> > > > }
> > > >+#endif
> > >
> > > This looks mangled though :) :)
> >
> > manglement aside, I'm -1 without an answer to the question on this
> > code which I posted previously...
> >
> > the answer may simply be
> >
> > "with Cygwin, all pthread mutexes are cross-process, so there is no
> > need for such a call"
> >
> > Since on other systems pthread mutexes are intra-process without
> > such a call, I can't help but wonder.
>
> Let me clarify my concern, in case somebody can find a flaw in my
> logic or in case it helps Stipe know what I would like him to verify
> (and document in comments).
>
> base facts/assumptions:
>
> 1) pthread mutexes are normally intra process, but if the following
> conditions are met, pthread mutexes can be used cross-process
>
> a) the mutex itself lives in shared memory which is addressible by
> the processes which need to serialize via the mutex
>
> b) the pthread_mutexattr_setpshared(,PTHREAD_PROCESS_SHARED) call
> is used to tell the pthreads library that the mutex is
> cross-process
>
> 2) not all systems which support pthread mutexes have the support to
> make them work cross-process; such systems either neglect to define
> PTHREAD_PROCESS_SHARED or return an error from
> pthread_mutexattr_setpshared(,PTHREAD_PROCESS_SHARED)
>
> 3) Cygwin always returns an error from
> pthread_mutexattr_setpshared(,PTHREAD_PROCESS_SHARED)
>
> 4) it is possible for Apache to appear to work correctly without
> proper accept serialization
>
> My conclusion from these facts/assumptions is that with Stipe's change
> he is falling into #4 above. In other words, he isn't getting working
> accept serialization. If that is true, I would prefer that for Cygwin
> we (Stipe) set whatever is required so that we don't try to do accept
> serialization at all, rather than using the pthread mutex support in a
> non-working manner.
>
> I accept that Cygwin may have certain nuances/deviations that result
> in Stipe's code to be appropriate (perhaps on Cygwin all pthread
> mutexes are cross-process and returning an error from
> pthread_mutexattr_setpshared() is Cygwin's way of telling you that the
> call is unnecessary), but I would like to see such nuances spelled out
> in comments adjacent to "#if !defined(CYGWIN)". As it stands, the
> code looks broken.
>
> I suspect that deep knowledge of Cygwin pthread mutex support (i.e.,
> communication with one of the developers or examining the source) is
> necessary to address the concern. If it is unclear why
> pthread_mutexattr_setpshared() returns EINVAL then probably we don't
> have the information to know why skipping that call is appropriate.
yep, I forwarded the issue to Robert Collins
<[EMAIL PROTECTED]> which is the one dealing with
Cygwin's pthreads.
Stipe
[EMAIL PROTECTED]
-------------------------------------------------------------------
Wapme Systems AG
M�nsterstr. 248
40470 D�sseldorf
Tel: +49-211-74845-0
Fax: +49-211-74845-299
E-Mail: [EMAIL PROTECTED]
Internet: http://www.wapme-systems.de
-------------------------------------------------------------------
wapme.net - wherever you are