On Friday 14 April 2006 14:23, Jeff Trawick wrote:
> On 4/14/06, Nick Kew <[EMAIL PROTECTED]> wrote:
> > On Friday 14 April 2006 12:27, Jeff Trawick wrote:
> > > On 4/14/06, Bojan Smojver <[EMAIL PROTECTED]> wrote:
> > > > On Thu, 2006-04-13 at 05:16 -0400, Craig Rodrigues wrote:
> > > > > I'm trying to update the FreeBSD port of apr to use this.
> > > > >
> > > > > Can the following patch go in?  Older FreeBSD versions
> > > > > like to have apr compiled with no thread support.
> > > >
> > > > I didn't actually compile this, but it looks OK to me.
> > >
> > > Same here...  dbd guru anywhere?
> >
> > There's a better patch in /trunk/.  But I guess that can go in 1.2.x.
>
> no need for dueling patches ;)  we just backport the trunk patch if it
> fits (maybe I can look at that tomorrow)...

I did look at it with reference to the recent apr_dbd_init change.
It does a little more than just the #ifdef.  If we backport that patch,
we should really backport some other stuff with it.

The story is this.  I noticed various drivers each created their own
mutexes, and had the same mutex-management code, including
#ifdef hackery (APR_HAS_THREADS and APR_DSO_BUILD).
It seemed sensible to collect that in one place.  So I did that by
exporting the apr_dbd mutex for use by drivers.  And by putting the
conditional stuff into apr_dbd, so that drivers can dispense with
the #ifdefs.

The core of the code in Trunk is:

#if APR_HAS_THREADS
static apr_thread_mutex_t* mutex = NULL;
apr_status_t apr_dbd_mutex_lock()
{
    return apr_thread_mutex_lock(mutex);
}
apr_status_t apr_dbd_mutex_unlock()
{
    return apr_thread_mutex_unlock(mutex);
}
#else
apr_status_t apr_dbd_mutex_lock() {
    return APR_SUCCESS;
}
apr_status_t apr_dbd_mutex_unlock() {
    return APR_SUCCESS;
}
#endif

with the accessor functions being defined in the private API
(for drivers), but not in the public API for applications.

-- 
Nick Kew

Reply via email to