You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by rb...@locus.apache.org on 2000/03/31 03:38:28 UTC

cvs commit: apache-2.0/src/lib/apr/locks/unix crossproc.c locks.h

rbb         00/03/30 17:38:28

  Modified:    src/lib/apr configure.in
               src/lib/apr/locks/unix crossproc.c locks.h
  Log:
  Fix pthread Cross Process locks.
  PR:	26
  Submitted by:	Mike Abbott <mj...@sgi.com>
  Reviewed by:	Ryan Bloom
  
  Revision  Changes    Path
  1.60      +1 -1      apache-2.0/src/lib/apr/configure.in
  
  Index: configure.in
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/lib/apr/configure.in,v
  retrieving revision 1.59
  retrieving revision 1.60
  diff -u -r1.59 -r1.60
  --- configure.in	2000/03/27 19:02:14	1.59
  +++ configure.in	2000/03/31 01:38:26	1.60
  @@ -373,7 +373,7 @@
   AC_IFALLYES(header:fcntl.h define:F_SETLK,
               AC_DECIDE(USE_FCNTL_SERIALIZE, [SVR4-style fcntl()]))
   AC_IFALLYES(header:pthread.h define:PTHREAD_PROCESS_SHARED dnl
  -            custom:use_pthread_cross,
  +            custom:with_pthread_cross,
               AC_DECIDE(USE_PROC_PTHREAD_SERIALIZE, [pthread mutex]))
   dnl AC_DECISION_FORCE(USE_FCNTL_SERIALIZE)
   AC_END_DECISION
  
  
  
  1.19      +11 -7     apache-2.0/src/lib/apr/locks/unix/crossproc.c
  
  Index: crossproc.c
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/lib/apr/locks/unix/crossproc.c,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- crossproc.c	2000/03/21 03:18:31	1.18
  +++ crossproc.c	2000/03/31 01:38:27	1.19
  @@ -141,8 +141,10 @@
   void setup_lock() {
   }
   
  -ap_status_t lock_cleanup(struct lock_t *lock)
  +ap_status_t lock_cleanup(void *lock_)
   {
  +    struct lock_t *lock=lock_;
  +
       if (lock->curr_locked == 1) {
           if (pthread_mutex_unlock(lock->interproc)) {
               return errno;
  @@ -168,7 +170,7 @@
       new->interproc = (pthread_mutex_t *)mmap((caddr_t) 0, 
                                 sizeof(pthread_mutex_t), 
                                 PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); 
  -    if (new->interproc = (void *) (caddr_t) -1) {
  +    if (new->interproc = (pthread_mutex_t *) (caddr_t) -1) {
           return errno;
       }
       close(fd);
  @@ -187,7 +189,7 @@
           return stat;
       }
   
  -    if ((stat = pthread_mutex_destroy(&mattr))) {
  +    if ((stat = pthread_mutexattr_destroy(&mattr))) {
           lock_cleanup(new);
           return stat;
       }
  @@ -200,7 +202,7 @@
   ap_status_t lock_inter(struct lock_t *lock)
   {
       ap_status_t stat;
  -    new->curr_locked = 1;
  +    lock->curr_locked = 1;
       if (stat = pthread_mutex_lock(lock->interproc)) {
           return stat;
       }
  @@ -212,9 +214,9 @@
       ap_status_t stat;
   
       if (stat = pthread_mutex_unlock(lock->interproc)) {
  -        returno stat;
  +        return stat;
       }
  -    new->curr_locked = 0;
  +    lock->curr_locked = 0;
       return APR_SUCCESS;
   }
   
  @@ -317,8 +319,10 @@
   void setup_lock() {
   }
   
  -ap_status_t lock_cleanup(struct lock_t *lock)
  +ap_status_t lock_cleanup(void *lock_)
   {
  +    struct lock_t *lock=lock_;
  +
       if (lock->curr_locked == 1) {
           if (flock(lock->interproc, LOCK_UN) < 0) {
               return errno;
  
  
  
  1.14      +3 -0      apache-2.0/src/lib/apr/locks/unix/locks.h
  
  Index: locks.h
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/lib/apr/locks/unix/locks.h,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- locks.h	2000/03/10 04:15:40	1.13
  +++ locks.h	2000/03/31 01:38:27	1.14
  @@ -88,6 +88,9 @@
   #if HAVE_FCNTL_H
   #include <fcntl.h>
   #endif
  +#if HAVE_SYS_MMAN_H
  +#include <sys/mman.h>
  +#endif
   
   #if APR_HAS_THREADS
   #if HAVE_PTHREAD_H