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/10/21 16:31:29 UTC

cvs commit: apache-2.0/src/lib/apr/threadproc/unix thread.c threadcancel.c threadpriv.c threadproc.h

rbb         99/10/21 07:31:29

  Modified:    src/lib/apr/include apr_portable.h
               src/lib/apr/locks/unix intraproc.c locks.c locks.h
               src/lib/apr/threadproc/unix thread.c threadcancel.c
                        threadpriv.c threadproc.h
  Log:
  Modify APR so that if we build without threads, we do not create no-op
  functions.
  
  Revision  Changes    Path
  1.9       +13 -3     apache-2.0/src/lib/apr/include/apr_portable.h
  
  Index: apr_portable.h
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/lib/apr/include/apr_portable.h,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- apr_portable.h	1999/10/11 17:51:47	1.8
  +++ apr_portable.h	1999/10/21 14:31:19	1.9
  @@ -64,6 +64,7 @@
   extern "C" {
   #endif /* __cplusplus */
   
  +#include "apr_config.h"
   #include "apr_general.h"
   #include "apr_thread_proc.h"
   #include "apr_file_io.h"
  @@ -165,18 +166,23 @@
   #else
       /* No Interprocess serialization, too bad. */
   #endif
  +#if APR_HAS_THREADS
  +    /* If no threads, no need for thread locks */
   #if defined (USE_PTHREAD_SERIALIZE)
       pthread_mutex_t *intraproc;
   #endif
  +#endif
   };
   
   typedef int                   ap_os_file_t;
   typedef DIR                   ap_os_dir_t;
   typedef int                   ap_os_sock_t;
   typedef struct os_lock_t      ap_os_lock_t;
  +#if APR_HAS_THREADS && HAVE_PTHREAD_H
   typedef pthread_t             ap_os_thread_t;
  -typedef pid_t                 ap_os_proc_t;
   typedef pthread_key_t         ap_os_threadkey_t;
  +#endif
  +typedef pid_t                 ap_os_proc_t;
   typedef struct timeval        ap_os_time_t;
   #endif
   
  @@ -184,19 +190,23 @@
   ap_status_t ap_get_os_dir(ap_os_dir_t *, ap_dir_t *);      
   ap_status_t ap_get_os_sock(ap_os_sock_t *, ap_socket_t *);
   ap_status_t ap_get_os_lock(ap_os_lock_t *, ap_lock_t *);     
  -ap_status_t ap_get_os_thread(ap_os_thread_t *, ap_thread_t *);
   ap_status_t ap_get_os_proc(ap_os_proc_t *, ap_proc_t *);     
   ap_status_t ap_get_os_time(ap_os_time_t **, ap_time_t *);     
  +#if APR_HAS_THREADS && HAVE_PTHREAD_H
  +ap_status_t ap_get_os_thread(ap_os_thread_t *, ap_thread_t *);
   ap_status_t ap_get_os_threadkey(ap_os_threadkey_t *, ap_key_t *);
  +#endif
   
   ap_status_t ap_put_os_file(ap_file_t **, ap_os_file_t *, ap_context_t *); 
   ap_status_t ap_put_os_dir(ap_dir_t **, ap_os_dir_t *, ap_context_t *); 
   ap_status_t ap_put_os_sock(ap_socket_t **, ap_os_sock_t *, ap_context_t *);
   ap_status_t ap_put_os_lock(ap_lock_t **, ap_os_lock_t *, ap_context_t *); 
  -ap_status_t ap_put_os_thread(ap_thread_t **, ap_os_thread_t *, ap_context_t *);
   ap_status_t ap_put_os_proc(ap_proc_t **, ap_os_proc_t *, ap_context_t *); 
   ap_status_t ap_put_os_time(ap_time_t **, ap_os_time_t *, ap_context_t *); 
  +#if APR_HAS_THREADS && HAVE_PTHREAD_H
  +ap_status_t ap_put_os_thread(ap_thread_t **, ap_os_thread_t *, ap_context_t *);
   ap_status_t ap_put_os_threadkey(ap_key_t **, ap_os_threadkey_t *, ap_context_t *);
  +#endif
   
   #ifdef __cplusplus
   }
  
  
  
  1.7       +4 -1      apache-2.0/src/lib/apr/locks/unix/intraproc.c
  
  Index: intraproc.c
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/lib/apr/locks/unix/intraproc.c,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- intraproc.c	1999/10/12 19:21:10	1.6
  +++ intraproc.c	1999/10/21 14:31:20	1.7
  @@ -52,12 +52,14 @@
    * project, please see <http://www.apache.org/>.
    *
    */
  -
  +#include "apr_config.h"
   #include "apr_lock.h"
   #include "apr_general.h"
   #include "apr_lib.h"
   #include "locks.h"
   
  +#if APR_HAS_THREADS
  +
   #if defined (USE_PTHREAD_SERIALIZE)  
   
   ap_status_t lock_intra_cleanup(void *data)
  @@ -119,4 +121,5 @@
       }
       return stat;
   }
  +#endif
   #endif
  
  
  
  1.11      +20 -0     apache-2.0/src/lib/apr/locks/unix/locks.c
  
  Index: locks.c
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/lib/apr/locks/unix/locks.c,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- locks.c	1999/10/15 14:20:01	1.10
  +++ locks.c	1999/10/21 14:31:20	1.11
  @@ -96,9 +96,13 @@
       }
   
       if (type != APR_CROSS_PROCESS) {
  +#if APR_HAS_THREADS
           if ((stat = create_intra_lock(new)) != APR_SUCCESS) {
               return stat;
           }
  +#else
  +        return APR_ENOTIMPL;
  +#endif
       }
       if (type != APR_INTRAPROCESS) {
           if ((stat = create_inter_lock(new)) != APR_SUCCESS) {
  @@ -118,9 +122,13 @@
   {
       ap_status_t stat;
       if (lock->type != APR_CROSS_PROCESS) {
  +#if APR_HAS_THREADS
           if ((stat = lock_intra(lock)) != APR_SUCCESS) {
               return stat;
           }
  +#else
  +        return APR_ENOTIMPL;
  +#endif
       }
       if (lock->type != APR_INTRAPROCESS) {
           if ((stat = lock_inter(lock)) != APR_SUCCESS) {
  @@ -140,9 +148,13 @@
       ap_status_t stat;
   
       if (lock->type != APR_CROSS_PROCESS) {
  +#if APR_HAS_THREADS
           if ((stat = unlock_intra(lock)) != APR_SUCCESS) {
               return stat;
           }
  +#else
  +        return APR_ENOTIMPL;
  +#endif
       }
       if (lock->type != APR_INTRAPROCESS) {
           if ((stat = unlock_inter(lock)) != APR_SUCCESS) {
  @@ -163,9 +175,13 @@
   {
       ap_status_t stat;
       if (lock->type != APR_CROSS_PROCESS) {
  +#if APR_HAS_THREADS
           if ((stat = destroy_intra_lock(lock)) != APR_SUCCESS) {
               return stat;
           }
  +#else
  +        return APR_ENOTIMPL;
  +#endif
       }
       if (lock->type != APR_INTRAPROCESS) {
           if ((stat = destroy_inter_lock(lock)) != APR_SUCCESS) {
  @@ -258,9 +274,11 @@
       oslock->lock_it = lock->lock_it;
       oslock->unlock_it = lock->unlock_it;
   #endif
  +#if APR_HAS_THREADS
   #if defined (USE_PTHREAD_SERIALIZE)
       oslock->intraproc = lock->intraproc;
   #endif
  +#endif
   
       return APR_SUCCESS;
   }
  @@ -290,8 +308,10 @@
       (*lock)->lock_it = thelock->lock_it;
       (*lock)->unlock_it = thelock->unlock_it;
   #endif
  +#if APR_HAS_THREADS
   #if defined (USE_PTHREAD_SERIALIZE)
       (*lock)->intraproc = thelock->intraproc;
  +#endif
   #endif
       return APR_SUCCESS;
   }
  
  
  
  1.5       +8 -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.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- locks.h	1999/10/04 16:36:58	1.4
  +++ locks.h	1999/10/21 14:31:21	1.5
  @@ -72,7 +72,9 @@
   #include <stdio.h>
   #include <fcntl.h>
   #endif
  +#if APR_HAS_THREADS && HAVE_PTHREAD_H
   #include <pthread.h>
  +#endif
   
   #ifndef HAVE_UNION_SEMUN
   /* it makes no sense, but this isn't defined on solaris */
  @@ -103,18 +105,24 @@
   #else
       /* No Interprocess serialization.  Too bad. */
   #endif 
  +#if APR_HAS_THREADS
  +    /* APR doesn't have threads, no sense in having an thread lock mechanism.
  +     */
   #if defined (USE_PTHREAD_SERIALIZE)
       pthread_mutex_t *intraproc;
   #endif
  +#endif
       /* At some point, we should do a type for both inter and intra process
        *  locking here.  Something like pthread_mutex with PTHREAD_PROCESS_SHARED
        */    
   };
   
  +#if APR_HAS_THREADS
   ap_status_t create_intra_lock(struct lock_t *new);
   ap_status_t lock_intra(struct lock_t *lock);
   ap_status_t unlock_intra(struct lock_t *lock);
   ap_status_t destroy_intra_lock(struct lock_t *lock);
  +#endif
   
   ap_status_t create_inter_lock(struct lock_t *new);
   ap_status_t lock_inter(struct lock_t *lock);
  
  
  
  1.8       +6 -79     apache-2.0/src/lib/apr/threadproc/unix/thread.c
  
  Index: thread.c
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/lib/apr/threadproc/unix/thread.c,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- thread.c	1999/10/15 14:20:23	1.7
  +++ thread.c	1999/10/21 14:31:22	1.8
  @@ -53,6 +53,10 @@
    *
    */
   
  +#include "apr_config.h"
  +
  +#ifdef APR_HAS_THREADS
  +
   #include "threadproc.h"
   #include "apr_thread_proc.h"
   #include "apr_general.h"
  @@ -289,84 +293,7 @@
       }
       (*thd)->td = thethd;
       return APR_SUCCESS;
  -}
  -#else
  -    /* No pthread.h, no threads for right now.*/
  -ap_status_t ap_create_threadattr(struct threadattr_t **new, ap_context_t *cont)
  -{
  -    *new = NULL;
  -    return APR_SUCCESS;
  -}
  -
  -ap_status_t ap_setthreadattr_detach(struct threadattr_t *attr, ap_int32_t on)
  -{
  -    return APR_SUCCESS;
  -}
  -
  -ap_status_t ap_getthreadattr_detach(struct threadattr_t *attr)
  -{
  -    return APR_NOTDETACH;
  -}
  -
  -ap_status_t ap_create_thread(struct thread_t **new, struct threadattr_t *attr, 
  -                             ap_thread_start_t func, void *data, 
  -                             ap_context_t *cont)
  -{
  -    *new = NULL;
  -    return stat;
  -}
  -
  -ap_status_t ap_thread_exit(ap_thread_t *thd, ap_status_t *retval)
  -{
  -    APR_SUCCESS;
  -}
  -
  -ap_status_t ap_thread_join(ap_status_t *retval, struct thread_t *thd)
  -{
  -    return APR_SUCCESS;
  -}
  -
  -ap_status_t ap_thread_detach(struct thread_t *thd)
  -{
  -    return APR_SUCCESS;
  -}
  -
  -/* ***APRDOC********************************************************
  - * ap_status_t ap_get_threaddata(void **, char *, ap_thread_t *)
  - *    Return the context associated with the current thread.
  - * arg 1) The currently open thread.
  - * arg 2) The user data associated with the thread.
  - */
  -ap_status_t ap_get_threaddata(void **data, char *key, struct thread_t *thread)
  -{
  -    data = NULL;
  -    return APR_ENOTHREAD;
  -}
  -
  -/* ***APRDOC********************************************************
  - * ap_status_t ap_set_threaddata(ap_thread_t *, void *, char *,
  -                                 ap_status_t (*cleanup) (void *))
  - *    Return the context associated with the current thread.
  - * arg 1) The currently open thread.
  - * arg 2) The user data to associate with the thread.
  - */
  -ap_status_t ap_set_threaddata(void *data, char *key,
  -                              ap_status_t (*cleanup) (void *),
  -                              struct thread_t *thread)
  -{
  -    return APR_ENOTHREAD;
  -}
  -
  -ap_status_t ap_get_os_thread(ap_os_thread_t *thethd, struct thread_t *thd)
  -{
  -    thethd = NULL;
  -    return APR_SUCCESS;
  -}
  -
  -ap_status_t ap_put_os_thread(ap_context_t *cont, struct thread_t **thd,
  -                             ap_os_thread_t *thethd)
  -{
  -    return APR_SUCCESS;
   }
  -#endif
  +#endif  /* HAVE_PTHREAD_H */
  +#endif  /* APR_HAS_THREADS */
   
  
  
  
  1.4       +3 -16     apache-2.0/src/lib/apr/threadproc/unix/threadcancel.c
  
  Index: threadcancel.c
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/lib/apr/threadproc/unix/threadcancel.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- threadcancel.c	1999/10/11 17:52:19	1.3
  +++ threadcancel.c	1999/10/21 14:31:22	1.4
  @@ -53,6 +53,8 @@
    *
    */
   
  +#if APR_HAS_THREADS
  +
   #include "threadproc.h"
   #include "apr_thread_proc.h"
   #include "apr_general.h"
  @@ -112,20 +114,5 @@
           return stat;
       }
   }
  -#else
  -ap_status_t ap_cancel_thread(struct thread_t *thd)
  -{
  -    return APR_SUCCESS;
  -}
  -    
  -ap_status_t ap_setcanceltype(ap_int32_t type, ap_context_t *cont)
  -{
  -    return APR_SUCCESS;
  -}
  -
  -ap_status_t ap_setcancelstate(ap_int32_t type, ap_context_t *cont)
  -{
  -    return APR_SUCCESS;
  -}
   #endif
  -
  +#endif
  
  
  
  1.8       +4 -59     apache-2.0/src/lib/apr/threadproc/unix/threadpriv.c
  
  Index: threadpriv.c
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/lib/apr/threadproc/unix/threadpriv.c,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- threadpriv.c	1999/10/15 14:20:24	1.7
  +++ threadpriv.c	1999/10/21 14:31:23	1.8
  @@ -53,6 +53,7 @@
    *
    */
   
  +#include "apr_config.h"
   #include "threadproc.h"
   #include "apr_thread_proc.h"
   #include "apr_general.h"
  @@ -60,6 +61,8 @@
   #include "apr_portable.h"
   #include "apr_lib.h"
   
  +#if APR_HAS_THREADS
  +
   #ifdef HAVE_PTHREAD_H
   /* ***APRDOC********************************************************
    * ap_status_t ap_create_thread_private(ap_context_t *, void *(void *),
  @@ -203,64 +206,6 @@
       }
       (*key)->key = *thekey;
       return APR_SUCCESS;
  -}           
  -#else
  -ap_status_t ap_create_thread_private(struct threadkey_t **key,
  -                                    void (*dest)(void *), ap_context_t *cont)
  -{
  -    *key = NULL;
  -    return APR_SUCCESS;
  -}
  -
  -ap_status_t ap_get_thread_private(void **new, struct threadkey_t *key)
  -{
  -    (*new) = NULL;
  -    return APR_SUCCESS;
  -}
  -
  -ap_status_t ap_set_thread_private(void *priv, struct threadkey_t *key)
  -{
  -    return APR_SUCCESS;
  -}
  -
  -ap_status_t ap_delete_thread_private(struct threadkey_t *key)
  -{
  -    return APR_SUCCESS; 
  -}
  -
  -/* ***APRDOC********************************************************
  - * ap_status_t ap_get_threadkeydata(ap_threadkey_t *, void *)
  - *    Return the context associated with the current threadkey.
  - * arg 1) The currently open threadkey.
  - * arg 2) The user data associated with the threadkey.
  - */
  -ap_status_t ap_get_threadkeydata(void **data, char *key, struct threadkey_t *threadkey)
  -{
  -    return APR_SUCCESS;
  -}
  -
  -/* ***APRDOC********************************************************
  - * ap_status_t ap_set_threadkeydata(ap_threadkey_t *, void *)
  - *    Return the context associated with the current threadkey.
  - * arg 1) The currently open threadkey.
  - * arg 2) The user data to associate with the threadkey.
  - */
  -ap_status_t ap_set_threadkeydata(void *data,
  -                                 char *key, ap_status_t (*cleanup) (void *),
  -                                 struct threadkey_t *threadkey)
  -{
  -    return APR_SUCCESS;
  -}
  -
  -ap_status_t ap_get_os_threadkey(ap_os_threadkey_t *thekey, struct threadkey_t *key)
  -{
  -    thekey = NULL;
  -    return APR_SUCCESS;
  -}
  -
  -ap_status_t ap_put_os_threadkey(struct threadkey_t **key,
  -                                ap_os_threadkey_t *thekey, ap_context_t *cont)
  -{
  -    return APR_SUCCESS;
   }           
  +#endif
   #endif
  
  
  
  1.4       +3 -1      apache-2.0/src/lib/apr/threadproc/unix/threadproc.h
  
  Index: threadproc.h
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/lib/apr/threadproc/unix/threadproc.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- threadproc.h	1999/10/04 16:37:40	1.3
  +++ threadproc.h	1999/10/21 14:31:26	1.4
  @@ -52,7 +52,7 @@
    * project, please see <http://www.apache.org/>.
    *
    */
  -
  +#include "apr_config.h"
   #include "apr_thread_proc.h"
   #include "apr_file_io.h"
   #include <pthread.h>
  @@ -62,6 +62,7 @@
   
   #define SHELL_PATH "/bin/sh"
   
  +#if APR_HAS_THREADS
   struct thread_t {
       ap_context_t *cntxt;
       pthread_t *td;
  @@ -76,6 +77,7 @@
       ap_context_t *cntxt;
       pthread_key_t key;
   };
  +#endif
   
   struct procattr_t {
       ap_context_t *cntxt;
  
  
  

Re: cvs commit: apache-2.0/src/lib/apr/threadproc/unix thread.c threadcancel.c threadpriv.c threadproc.h

Posted by Ryan Bloom <rb...@raleigh.ibm.com>.
> >  +#if APR_HAS_THREADS && HAVE_PTHREAD_H
> >  +ap_status_t ap_get_os_thread(ap_os_thread_t *, ap_thread_t *);
> >   ap_status_t ap_get_os_threadkey(ap_os_threadkey_t *, ap_key_t *);
> >  +#endif
> 
> Hang on, you can't use tests for pthreads outside of unix specific code. I
> think we need a bit more abstraction for the "do we have threads" test.

Sorry, My bad.  I'll fix this ASAP.  Not paying enough attention this
week.  I promise, I'll be more with it when I get back.

Ryan

_______________________________________________________________________
Ryan Bloom		rbb@raleigh.ibm.com
4205 S Miami Blvd	
RTP, NC 27709		It's a beautiful sight to see good dancers 
			doing simple steps.  It's a painful sight to
			see beginners doing complicated patterns.	


Re: cvs commit: apache-2.0/src/lib/apr/threadproc/unix thread.c threadcancel.c threadpriv.c threadproc.h

Posted by Brian Havard <br...@kheldar.apana.org.au>.
On 21 Oct 1999 14:31:29 -0000, rbb@hyperreal.org wrote:

>rbb         99/10/21 07:31:29
>
>  Modified:    src/lib/apr/include apr_portable.h
>               src/lib/apr/locks/unix intraproc.c locks.c locks.h
>               src/lib/apr/threadproc/unix thread.c threadcancel.c
>                        threadpriv.c threadproc.h
>  Log:
>  Modify APR so that if we build without threads, we do not create no-op
>  functions.
>  
>  Revision  Changes    Path
>  1.9       +13 -3     apache-2.0/src/lib/apr/include/apr_portable.h
>  
>  Index: apr_portable.h
>  ===================================================================
>  RCS file: /home/cvs/apache-2.0/src/lib/apr/include/apr_portable.h,v
>  retrieving revision 1.8
>  retrieving revision 1.9
>  diff -u -r1.8 -r1.9
>  --- apr_portable.h	1999/10/11 17:51:47	1.8
>  +++ apr_portable.h	1999/10/21 14:31:19	1.9

[...]

>  +#if APR_HAS_THREADS && HAVE_PTHREAD_H
>  +ap_status_t ap_get_os_thread(ap_os_thread_t *, ap_thread_t *);
>   ap_status_t ap_get_os_threadkey(ap_os_threadkey_t *, ap_key_t *);
>  +#endif

Hang on, you can't use tests for pthreads outside of unix specific code. I
think we need a bit more abstraction for the "do we have threads" test.

-- 
 ______________________________________________________________________________
 |  Brian Havard                 |  "He is not the messiah!                   |
 |  brianh@kheldar.apana.org.au  |  He's a very naughty boy!" - Life of Brian |
 ------------------------------------------------------------------------------