             Technical notes on version 3.8.2Beta9
                        28 April 2001
                        Kern Sibbald

General:
- I've added a first cut of pthreads support.

Changes submitted this submission:
- Pthreads now works on RedHat Linux and on Win32
  machines. It is enabled with:

   ./configure --enable-pthreads

  I've provided new PTHREAD_CFLAGS and PTHREAD_LFLAGS
  defines so that pthreads can be adapted to different
  systems. Currently, no checks are made in ./configure
  to assure that pthreads really exists.  The pthreads
  functions used are:

    pthread_create
    pthread_mutex_init
    pthread_mutex_lock
    pthread_mutex_unlock
    pthread_join
    pthread_self
    pthread_equal
    pthread_cancel
    pthread_detach
    pthread_mutex_destroy

  For the moment, I have not implemented multiple readers,
  single writer.  It is simply single everything. I'm not
  sure that multiple readers will be necessary. If so, I will
  add:

    pthread_cond_init
    pthread_cond_broadcast
    pthread_cond_destroy
    pthread_cond_wait
    pthread_cond_signal

  to the list of pthreads functions used.

  On Sun systems, I set the concurrency to 4. On
  all other systems, it is assumed that this is
  not necessary, which is the case for Linux 
  (some adjustments will probably be needed).

  I've looked at a number of other pthreads packages
  (MIT threads, Omnithreads, and Ralf Engelschall's 
   PTH (GNU Portable Threads), and I don't exclude
  using one or more of them in a future version, but
  I don't have the energy to ramp up the learning curve
  for the moment.                     

  With pthreads enabled, there is only one process and
  a number of threads (on Linux this translates into
  light weight processes, which look like processes).
  Also, with pthreads enabled, there is no shared memory
  segment, which means that apcaccess now must communicate
  to the daemon using TCP/IP and hence if you want apcaccess
  to work, you must run the NIS server.
- Modified apcaccess to use the NIS for the UPS information
  when no shared memory is configured.
- Modified the NIS server to set SO_REUSEADDR on the
  socket (also SO_KEEPALIVE). This should reduce the number of
  bind failures.
- Removed some old USE_TMP_DIRECTORY defines that are not
  used.
- Added --with-pwrfail-dir=xxx as a ./configure option to
  be able to set the powerfail directory.
- The SERVERPORT configuration directive is now NISPORT,
  for compatibility, I have left the old name as well.
- I removed the compiled in default for status file directory
  since it is defined in apcupsd.conf



  
