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...@hyperreal.org on 1999/05/24 20:16:53 UTC

cvs commit: apache-apr/include apr_errno.h apr_lock.h

rbb         99/05/24 11:16:52

  Modified:    apr/locks/unix crossproc.c intraproc.c locks.c
               apr/test testthread.c
               include  apr_errno.h apr_lock.h
  Log:
  Locking functions now all return status codes.  Also updated test function
  appropriately.
  
  Revision  Changes    Path
  1.6       +47 -37    apache-apr/apr/locks/unix/crossproc.c
  
  Index: crossproc.c
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/locks/unix/crossproc.c,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- crossproc.c	1999/05/24 02:04:03	1.5
  +++ crossproc.c	1999/05/24 18:16:34	1.6
  @@ -79,12 +79,12 @@
   
       if (new->interproc < 0) {
           lock_cleanup(new);
  -        return APR_FAILURE;
  +        return errno;
       }
       ick.val = 1;
  -    if (senctl(new->interproc, 0, SETVAL, ick) < 0) {
  +    if (semctl(new->interproc, 0, SETVAL, ick) < 0) {
           lock_cleanup(new);
  -        return APR_FAILURE;
  +        return errno;
       }
               /* pre-initialize these */
       new->op_on.sem_num = 0;
  @@ -103,7 +103,7 @@
   {
       new->curr_locked == 1;
       if (semop(lock->interproc, &lock->op_on, 1) < 0) {
  -        return(APR_FAILURE);
  +        return errno;
       }
       return APR_SUCCESS;
   }
  @@ -111,7 +111,7 @@
   ap_status_t unlock_inter(struct lock_t *lock)
   {
       if (semop(lock->interproc, &lock->op_off, 1) < 0) {
  -        return(APR_FAILURE);
  +        return errno;
       }
       new->curr_locked == 0;
       return APR_SUCCESS;
  @@ -119,11 +119,13 @@
   
   ap_status_t destroy_inter_lock(struct lock_t *lock)
   {
  -    if (lock_cleanup(lock) == APR_SUCCESS) {
  +    ap_status_t stat;
  +
  +    if ((stat = lock_cleanup(lock)) == APR_SUCCESS) {
           ap_kill_cleanup(lock->cntxt->pool, lock, lock_cleanup);
           return APR_SUCCESS;
       }
  -    return APR_FAILURE;
  +    return stat;
   }
   #elif defined (USE_PROC_PTHREAD_SERIALIZE)  
   
  @@ -131,10 +133,10 @@
   {
       if (lock->curr_locked == 1) {
           if (pthread_mutex_unlock(lock->interproc)) {
  -            return APR_FAILURE;
  +            return errno;
           } 
           if (munmap((caddr_t)lock->interproc, sizeof(pthread_mutex_t))){
  -            return APR_FAILURE;
  +            return errno;
           }
       }
       return APR_SUCCESS;
  @@ -142,39 +144,40 @@
   
   ap_status_t create_inter_lock(struct lock_t *new)
   {
  +    ap_status_t stat;
       int fd;
       pthread_mutexattr_t mattr;
   
       fd = open("/dev/zero", O_RDWR);
       if (fd < 0) {
  -        return APR_FAILURE;
  +        return errno;
       }
   
       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) {
  -        return APR_FAILURE;
  +        return errno;
       }
       close(fd);
  -    if ((errno = pthread_mutexattr_init(&mattr))) {
  +    if ((stat = pthread_mutexattr_init(&mattr))) {
           lock_cleanup(new);
  -        return APR_FAILURE;
  +        return stat;
       }
  -    if ((errno = pthread_mutexattr_setpshared(&mattr, 
  +    if ((stat = pthread_mutexattr_setpshared(&mattr, 
                                                 PTHREAD_PROCESS_SHARED))) {
           lock_cleanup(new);
  -        return APR_FAILURE;
  +        return stat;
       }
   
  -    if ((errno = pthread_mutex_init(new->interproc, &mattr))) {
  +    if ((stat = pthread_mutex_init(new->interproc, &mattr))) {
           lock_cleanup(new);
  -        return APR_FAILURE;
  +        return stat;
       }
   
  -    if ((errno = pthread_mutex_destroy(&mattr))) {
  +    if ((stat = pthread_mutex_destroy(&mattr))) {
           lock_cleanup(new);
  -        return APR_FAILURE;
  +        return stat;
       }
   
       new->curr_locked == 0;
  @@ -184,17 +187,20 @@
   
   ap_status_t lock_inter(struct lock_t *lock)
   {
  +    ap_status_t stat;
       new->curr_locked == 1;
  -    if (errno = pthread_mutex_lock(lock->interproc)) {
  -        return(APR_FAILURE);
  +    if (stat = pthread_mutex_lock(lock->interproc)) {
  +        return stat;
       }
       return APR_SUCCESS;
   }
   
   ap_status_t unlock_inter(struct lock_t *lock)
   {
  -    if (errno = pthread_mutex_unlock(lock->interproc)) {
  -        return(APR_FAILURE);
  +    ap_status_t stat;
  +
  +    if (stat = pthread_mutex_unlock(lock->interproc)) {
  +        returno stat;
       }
       new->curr_locked == 0;
       return APR_SUCCESS;
  @@ -202,11 +208,12 @@
   
   ap_status_t destroy_inter_lock(struct lock_t *lock)
   {
  -    if (lock_cleanup(lock) == APR_SUCCESS) {
  +    ap_status_t stat;
  +    if ((stat = lock_cleanup(lock)) == APR_SUCCESS) {
           ap_kill_cleanup(lock->cntxt->pool, lock, lock_cleanup);
           return APR_SUCCESS;
       }
  -    return APR_FAILURE;
  +    return stat;
   }
   
   #elif defined (USE_FCNTL_SERIALIZE)  
  @@ -215,7 +222,7 @@
   {
       if (lock->curr_locked == 1) {
           if (fcntl(lock->interproc, F_SETLKW, &lock->unlock_it) < 0) {
  -            return(APR_FAILURE);
  +            return errno;
           }
           lock->curr_locked == 0;
       }
  @@ -228,7 +235,7 @@
   
       if (new->interproc < 0) {
           lock_cleanup(new);
  -        return APR_FAILURE;
  +        return errno;
       }
               /* pre-initialize these */
       new->lock_it.l_whence = SEEK_SET;        /* from current point */
  @@ -252,7 +259,7 @@
   {
       lock->curr_locked == 1;
       if (fcntl(lock->interproc, F_SETLKW, &lock->lock_it) < 0) {
  -        return(APR_FAILURE);
  +        return errno;
       }
       return APR_SUCCESS;
   }
  @@ -260,7 +267,7 @@
   ap_status_t unlock_inter(struct lock_t *lock)
   {
       if (fcntl(lock->interproc, F_SETLKW, &lock->unlock_it) < 0) {
  -        return(APR_FAILURE);
  +        return errno;
       }
       lock->curr_locked == 0;
       return APR_SUCCESS;
  @@ -268,18 +275,20 @@
   
   ap_status_t destroy_inter_lock(struct lock_t *lock)
   {
  -    if (lock_cleanup(lock) == APR_SUCCESS) {
  +    ap_status_t stat;
  +    if ((stat = lock_cleanup(lock)) == APR_SUCCESS) {
           ap_kill_cleanup(lock->cntxt->pool, lock, lock_cleanup);
           return APR_SUCCESS;
       }
  -    return APR_FAILURE;
  +    return stat;
   }
  +
   #elif defined (USE_FLOCK_SERIALIZE)
   ap_status_t lock_cleanup(struct lock_t *lock)
   {
       if (lock->curr_locked == 1) {
           if (flock(lock->interproc, LOCK_UN) < 0) {
  -            return(APR_FAILURE);
  +            return errno;
           }
           new->curr_locked == 0;
       }
  @@ -293,7 +302,7 @@
   
       if (new->interproc < 0) {
           lock_cleanup(new);
  -        return APR_FAILURE;
  +        return errno;
       }
       new->curr_locked == 0;
       ap_register_cleanup(new->cntxt->pool, (void *)new, lock_cleanup, NULL);
  @@ -304,7 +313,7 @@
   {
       new->curr_locked == 1;
       if (flock(lock->interproc, LOCK_EX) < 0) {
  -        return(APR_FAILURE);
  +        return errno;
       }
       return APR_SUCCESS;
   }
  @@ -312,7 +321,7 @@
   ap_status_t unlock_inter(struct lock_t *lock)
   {
       if (flock(lock->interproc, LOCK_UN) < 0) {
  -        return(APR_FAILURE);
  +        return errno;
       }
       new->curr_locked == 0;
       return APR_SUCCESS;
  @@ -320,11 +329,12 @@
   
   ap_status_t destroy_inter_lock(struct lock_t *lock)
   {
  -    if (lock_cleanup(lock) == APR_SUCCESS) {
  +    ap_status_t stat;
  +    if ((stat = lock_cleanup(lock)) == APR_SUCCESS) {
           ap_kill_cleanup(lock->cntxt->pool, lock, lock_cleanup);
           return APR_SUCCESS;
       }
  -    return APR_FAILURE;
  +    return stat;
   }
   #else
   /* No inter-process mutex on this platform.  Use at your own risk */
  
  
  
  1.6       +22 -15    apache-apr/apr/locks/unix/intraproc.c
  
  Index: intraproc.c
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/locks/unix/intraproc.c,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- intraproc.c	1999/05/24 02:04:03	1.5
  +++ intraproc.c	1999/05/24 18:16:37	1.6
  @@ -61,9 +61,10 @@
   
   ap_status_t lock_intra_cleanup(struct lock_t *lock)
   {
  +    ap_status_t stat;
       if (lock->curr_locked == 1) {
  -        if (pthread_mutex_unlock(lock->intraproc)) {
  -            return APR_FAILURE;
  +        if (stat = pthread_mutex_unlock(lock->intraproc)) {
  +            return stat;
           } 
       }
       return APR_SUCCESS;
  @@ -71,26 +72,27 @@
   
   ap_status_t create_intra_lock(struct lock_t *new)
   {
  +    ap_status_t stat;
       pthread_mutexattr_t mattr;
   
       new->intraproc = (pthread_mutex_t *)ap_palloc(new->cntxt->pool, 
                                 sizeof(pthread_mutex_t));
       if (new->intraproc == NULL ) {
  -        return APR_FAILURE;
  +        return errno;
       }
  -    if ((errno = pthread_mutexattr_init(&mattr))) {
  +    if ((stat = pthread_mutexattr_init(&mattr))) {
           lock_intra_cleanup(new);
  -        return APR_FAILURE;
  +        return stat;
       }
   
  -    if ((errno = pthread_mutex_init(new->intraproc, &mattr))) {
  +    if ((stat = pthread_mutex_init(new->intraproc, &mattr))) {
           lock_intra_cleanup(new);
  -        return APR_FAILURE;
  +        return stat;
       }
   
  -    if ((errno = pthread_mutex_destroy(new->intraproc))) {
  +    if ((stat = pthread_mutex_destroy(new->intraproc))) {
           lock_intra_cleanup(new);
  -        return APR_FAILURE;
  +        return stat;
       }
   
       new->curr_locked == 0;
  @@ -100,17 +102,21 @@
   
   ap_status_t lock_intra(struct lock_t *lock)
   {
  +    ap_status_t stat;
  +
       lock->curr_locked == 1;
  -    if (errno = pthread_mutex_lock(lock->intraproc)) {
  -        return(APR_FAILURE);
  +    if (stat = pthread_mutex_lock(lock->intraproc)) {
  +        return stat;
       }
       return APR_SUCCESS;
   }
   
   ap_status_t unlock_intra(struct lock_t *lock)
   {
  -    if (errno = pthread_mutex_unlock(lock->intraproc)) {
  -        return(APR_FAILURE);
  +    ap_status_t stat;
  +
  +    if (stat = pthread_mutex_unlock(lock->intraproc)) {
  +        return stat;
       }
       lock->curr_locked == 0;
       return APR_SUCCESS;
  @@ -118,10 +124,11 @@
   
   ap_status_t destroy_intra_lock(struct lock_t *lock)
   {
  -    if (lock_intra_cleanup(lock) == APR_SUCCESS) {
  +    ap_status_t stat;
  +    if ((stat = lock_intra_cleanup(lock)) == APR_SUCCESS) {
           ap_kill_cleanup(lock->cntxt->pool, lock, lock_intra_cleanup);
           return APR_SUCCESS;
       }
  -    return APR_FAILURE;
  +    return stat;
   }
   #endif
  
  
  
  1.7       +24 -18    apache-apr/apr/locks/unix/locks.c
  
  Index: locks.c
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/locks/unix/locks.c,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- locks.c	1999/05/24 02:38:40	1.6
  +++ locks.c	1999/05/24 18:16:40	1.7
  @@ -57,9 +57,10 @@
   #include "locks.h"
   #include <string.h>
   
  -struct lock_t *ap_create_lock(ap_context_t *cont, ap_locktype_e type, char *fname)
  +ap_status_t ap_create_lock(ap_context_t *cont, ap_locktype_e type, char *fname, struct lock_t **lock)
   {
       struct lock_t *new;
  +    ap_status_t stat;
   
       new = (struct lock_t *)ap_palloc(cont->pool, sizeof(struct lock_t));
   
  @@ -68,28 +69,30 @@
       new->fname = strdup(fname);
   
       if (type != APR_CROSS_PROCESS) {
  -        if (create_intra_lock(new) == APR_FAILURE) {
  -            return NULL;
  +        if ((stat = create_intra_lock(new)) != APR_SUCCESS) {
  +            return stat;
           }
       }
       if (type != APR_INTRAPROCESS) {
  -        if (create_inter_lock(new) == APR_FAILURE) {
  -            return NULL;
  +        if ((stat = create_inter_lock(new)) != APR_SUCCESS) {
  +            return stat;
           }
       }
  -    return new;
  +    *lock = new;
  +    return APR_SUCCESS;
   }
   
   ap_status_t ap_lock(struct lock_t *lock)
   {
  +    ap_status_t stat;
       if (lock->type != APR_CROSS_PROCESS) {
  -        if (lock_intra(lock) == APR_FAILURE) {
  -            return APR_FAILURE;
  +        if ((stat = lock_intra(lock)) != APR_SUCCESS) {
  +            return stat;
           }
       }
       if (lock->type != APR_INTRAPROCESS) {
  -        if (lock_inter(lock) == APR_FAILURE) {
  -            return APR_FAILURE;
  +        if ((stat = lock_inter(lock)) != APR_SUCCESS) {
  +            return stat;
           }
       }
       return APR_SUCCESS;
  @@ -97,14 +100,16 @@
   
   ap_status_t ap_unlock(struct lock_t *lock)
   {
  +    ap_status_t stat;
  +
       if (lock->type != APR_CROSS_PROCESS) {
  -        if (unlock_intra(lock) == APR_FAILURE) {
  -            return APR_FAILURE;
  +        if ((stat = unlock_intra(lock)) != APR_SUCCESS) {
  +            return stat;
           }
       }
       if (lock->type != APR_INTRAPROCESS) {
  -        if (unlock_inter(lock) == APR_FAILURE) {
  -            return APR_FAILURE;
  +        if ((stat = unlock_inter(lock)) != APR_SUCCESS) {
  +            return stat;
           }
       }
       return APR_SUCCESS;
  @@ -112,14 +117,15 @@
   
   ap_status_t ap_destroy_lock(struct lock_t *lock)
   {
  +    ap_status_t stat;
       if (lock->type != APR_CROSS_PROCESS) {
  -        if (destroy_intra_lock(lock) == APR_FAILURE) {
  -            return APR_FAILURE;
  +        if ((stat = destroy_intra_lock(lock)) != APR_SUCCESS) {
  +            return stat;
           }
       }
       if (lock->type != APR_INTRAPROCESS) {
  -        if (destroy_inter_lock(lock) == APR_FAILURE) {
  -            return APR_FAILURE;
  +        if ((stat = destroy_inter_lock(lock)) != APR_SUCCESS) {
  +            return stat;
           }
       }
       return APR_SUCCESS;
  
  
  
  1.3       +2 -2      apache-apr/apr/test/testthread.c
  
  Index: testthread.c
  ===================================================================
  RCS file: /home/cvs/apache-apr/apr/test/testthread.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- testthread.c	1999/05/24 02:04:13	1.2
  +++ testthread.c	1999/05/24 18:16:45	1.3
  @@ -124,8 +124,8 @@
       fprintf(stdout, "OK\n");
   
       fprintf(stdout, "Initializing the lock......."); 
  -    thread_lock = ap_create_lock(context, APR_INTRAPROCESS, "lock.file"); 
  -    if (thread_lock == NULL) {
  +    st = ap_create_lock(context, APR_INTRAPROCESS, "lock.file", &thread_lock); 
  +    if (st != APR_SUCCESS) {
           fprintf(stderr, "Could not create lock\n");
           exit(-1);
       }
  
  
  
  1.12      +29 -29    apache-apr/include/apr_errno.h
  
  Index: apr_errno.h
  ===================================================================
  RCS file: /home/cvs/apache-apr/include/apr_errno.h,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- apr_errno.h	1999/05/24 17:28:19	1.11
  +++ apr_errno.h	1999/05/24 18:16:48	1.12
  @@ -206,61 +206,61 @@
   #else
   #define APR_ESPIPE 3022
   #endif
  -/*
  -#ifdef EBUSY
  -#define APR_EBUSY EBUSY
  +
  +#ifdef EIDRM
  +#define APR_EIDRM EIDRM
   #else
  -#define APR_EBUSY 3021
  +#define APR_EIDRM 3023
   #endif
   
  -#ifdef EBUSY
  -#define APR_EBUSY EBUSY
  +#ifdef ERANGE
  +#define APR_ERANGE ERANGE
   #else
  -#define APR_EBUSY 3021
  +#define APR_ERANGE 3024
   #endif
   
  -#ifdef EBUSY
  -#define APR_EBUSY EBUSY
  +#ifdef E2BIG
  +#define APR_E2BIG E2BIG
   #else
  -#define APR_EBUSY 3021
  +#define APR_E2BIG 3025
   #endif
   
  -#ifdef EBUSY
  -#define APR_EBUSY EBUSY
  +#ifdef EAGAIN
  +#define APR_EAGAIN EAGAIN
   #else
  -#define APR_EBUSY 3021
  +#define APR_EAGAIN 3026
   #endif
   
  -#ifdef EBUSY
  -#define APR_EBUSY EBUSY
  +#ifdef EFBIG
  +#define APR_EFBIG EFBIG
   #else
  -#define APR_EBUSY 3021
  +#define APR_EFBIG 3027
   #endif
   
  -#ifdef EBUSY
  -#define APR_EBUSY EBUSY
  +#ifdef EINTR
  +#define APR_EINTR EINTR
   #else
  -#define APR_EBUSY 3021
  +#define APR_EINTR 3028
   #endif
   
  -#ifdef EBUSY
  -#define APR_EBUSY EBUSY
  +#ifdef EDEADLK
  +#define APR_EDEADLK EDEADLK
   #else
  -#define APR_EBUSY 3021
  +#define APR_EDEADLK 3029
   #endif
   
  -#ifdef EBUSY
  -#define APR_EBUSY EBUSY
  +#ifdef ENOLCK
  +#define APR_ENOLCK ENOLCK
   #else
  -#define APR_EBUSY 3021
  +#define APR_ENOLCK 3030
   #endif
   
  -#ifdef EBUSY
  -#define APR_EBUSY EBUSY
  +#ifdef EWOULDBLOCK
  +#define APR_EWOULDBLOCK EWOULDBLOCK
   #else
  -#define APR_EBUSY 3021
  +#define APR_EWOULDBLOCK 3031
   #endif
  -
  +/*
   #ifdef EBUSY
   #define APR_EBUSY EBUSY
   #else
  
  
  
  1.3       +1 -1      apache-apr/include/apr_lock.h
  
  Index: apr_lock.h
  ===================================================================
  RCS file: /home/cvs/apache-apr/include/apr_lock.h,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- apr_lock.h	1999/05/24 02:04:23	1.2
  +++ apr_lock.h	1999/05/24 18:16:49	1.3
  @@ -68,7 +68,7 @@
   typedef struct lock_t           ap_lock_t;
   
   /*   Function definitions */
  -ap_lock_t *ap_create_lock(ap_context_t *, ap_locktype_e, char *);
  +ap_status_t ap_create_lock(ap_context_t *, ap_locktype_e, char *, ap_lock_t **);
   ap_status_t ap_lock(ap_lock_t *);
   ap_status_t ap_unlock(ap_lock_t *);
   ap_status_t ap_destroy_lock(ap_lock_t *);