As you perhaps remember, one of my current projects is to add shared memory
pools to Apache 1.3. Because this would open a large scale of new
possibilities for module authors, especially for Doug, Rasmus and me. 

For this I've already created an abstraction library in the past which I've
now publically released under an Open Source (BSD-style) license (see
Freshmeat).  The idea is that once this library is 100% stable and ported to
all Unix platforms we can reconsider my already prepared patch to alloc.c
which adds support for shared memory pools with the help of this library.
Whether the library is finally included in the distribution or has to be
grabbed externally isn't important up to now. Because the whole shared memory
pools are _optional_ and enabled only with an "Rule SHARED_POOL=yes".

While testing our forthcoming OpenSSL 0.9.2 baby on some plaforms this week,
I've now also spent a few days and added GNU Autoconf and GNU Libtool support
to this library and replaced all hard-coded platform checks with a lot more
sophisticated decision scheme (you remember: for shared memory and mutex
implementation there are a lot of possibilities under Unix and the MM library
supports all - but it has to _decide_ which one ;-).  At least the beast now
works under FreeBSD, Linux and Solaris.  And with a little bit of tweaking the
configure.in script it just also adjust for any other Unix platform which
supports some kind of shared memory and mutex.

Currently I've implemented the following variants which already cover 95% of
all current major Unix platforms AFAIK:

  Shared Memory:
  o Classical mmap() on temporary file
  o SVR4-style mmap() on /dev/zero
  o mmap() via POSIX.1 shm_open() on temporary file
  o 4.4BSD-style mmap() via MAP_ANON
  o SysV IPC shmget()

  Mutex/Semaphore:
  o 4.2BSD-style flock() on temporary file
  o SVR4-style fcntl() on temporary file
  o SysV IPC semget()

What's now needed is _YOUR_ feedback when we really want that this library can
be used inside Apache 1.3 (and perhaps even inside Apache 2.0's APR).  Go to
http://www.engelschall.com/sw/mm/ and grab the latest tarball and run

  $ gunzip <libmm-1.0bX.tar.gz | tar xvf -
  $ cd libmm-1.0bX
  $ ./configure
  $ make
  $ make test

and send me your results.

One last note: The source tree is already designed and prepared to be easily
stripped down for inclusion as src/mm/ inside the Apache distribution. The
whole libtool and config.guess stuff and other Apache-unrelated things can be
easily stripped from the source tree. So, don't panic when it looks larger at
the first spot than you would expect it...

Greetings,
                                       Ralf S. Engelschall
                                       [EMAIL PROTECTED]
                                       www.engelschall.com
______________________________________________________________________
Apache Interface to SSLeay (mod_ssl)   www.engelschall.com/sw/mod_ssl/
Official Support Mailing List               [EMAIL PROTECTED]
Automated List Manager                       [EMAIL PROTECTED]

Reply via email to