Diff for /include/ldap_int_thread.h between versions 1.10.2.1 and 1.35

version 1.10.2.1, 2003/03/03 17:10:03 version 1.35, 2011/01/04 23:42:57
Line 1 Line 1
 /* $OpenLDAP: pkg/ldap/include/ldap_int_thread.h,v 1.10 2002/01/04 19:40:30 kurt Exp $ */  /* ldap_int_thread.h - ldap internal thread wrappers header file */
 /*  /* $OpenLDAP: pkg/ldap/include/ldap_int_thread.h,v 1.34 2010/12/06 09:48:29 hallvard Exp $ */
  * Copyright 1998-2003 The OpenLDAP Foundation, Redwood City, California, USA  /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
    * 
    * Copyright 1998-2011 The OpenLDAP Foundation.
  * All rights reserved.   * All rights reserved.
  *   *
  * Redistribution and use in source and binary forms, with or without   * Redistribution and use in source and binary forms, with or without
  * modification, are permitted only as authorized by the OpenLDAP   * modification, are permitted only as authorized by the OpenLDAP
  * Public License.  A copy of this license is available at   * Public License.
  * http://www.OpenLDAP.org/license.html or in file LICENSE in the   *
  * top-level directory of the distribution.   * A copy of this license is available in file LICENSE in the
    * top-level directory of the distribution or, alternatively, at
    * <http://www.OpenLDAP.org/license.html>.
  */   */
 /* ldap_int_thread.h - ldap internal thread wrappers header file */  
   
   LDAP_BEGIN_DECL
   
   /* Can be done twice in libldap_r.  See libldap_r/ldap_thr_debug.h. */
   LDAP_F(int) ldap_int_thread_initialize LDAP_P(( void ));
   LDAP_F(int) ldap_int_thread_destroy    LDAP_P(( void ));
   
   LDAP_END_DECL
   
   
 #ifndef _LDAP_INT_THREAD_H  #ifndef _LDAP_INT_THREAD_H
 #define _LDAP_INT_THREAD_H  #define _LDAP_INT_THREAD_H
Line 31  LDAP_BEGIN_DECL Line 44  LDAP_BEGIN_DECL
 typedef pthread_t               ldap_int_thread_t;  typedef pthread_t               ldap_int_thread_t;
 typedef pthread_mutex_t         ldap_int_thread_mutex_t;  typedef pthread_mutex_t         ldap_int_thread_mutex_t;
 typedef pthread_cond_t          ldap_int_thread_cond_t;  typedef pthread_cond_t          ldap_int_thread_cond_t;
   typedef pthread_key_t           ldap_int_thread_key_t;
   
   #define ldap_int_thread_equal(a, b)     pthread_equal((a), (b))
   
 #if defined( _POSIX_REENTRANT_FUNCTIONS ) || \  #if defined( _POSIX_REENTRANT_FUNCTIONS ) || \
         defined( _POSIX_THREAD_SAFE_FUNCTIONS ) || \          defined( _POSIX_THREAD_SAFE_FUNCTIONS ) || \
Line 48  typedef pthread_cond_t  ldap_int_thread_ Line 64  typedef pthread_cond_t  ldap_int_thread_
 #define LDAP_THREAD_HAVE_SETCONCURRENCY 1  #define LDAP_THREAD_HAVE_SETCONCURRENCY 1
 #endif  #endif
   
 #if 0 && defined( HAVE_PTHREAD_RWLOCK_DESTROY )  #if defined( HAVE_PTHREAD_RWLOCK_DESTROY )
 #define LDAP_THREAD_HAVE_RDWR 1  #define LDAP_THREAD_HAVE_RDWR 1
 typedef pthread_rwlock_t ldap_pvt_thread_rdwr_t;  typedef pthread_rwlock_t ldap_int_thread_rdwr_t;
   #endif
   
   #ifndef LDAP_INT_MUTEX_NULL
   #define LDAP_INT_MUTEX_NULL     PTHREAD_MUTEX_INITIALIZER
   #define LDAP_INT_MUTEX_FIRSTCREATE(m)   ((void) 0)
 #endif  #endif
   
 LDAP_END_DECL  LDAP_END_DECL
Line 64  LDAP_END_DECL Line 85  LDAP_END_DECL
   
 #if defined( HAVE_MACH_CTHREADS_H )  #if defined( HAVE_MACH_CTHREADS_H )
 #       include <mach/cthreads.h>  #       include <mach/cthreads.h>
 #elif defined( HAVE_CTHREAD_H  #elif defined( HAVE_CTHREADS_H )
 #       include <cthreads.h>  #       include <cthreads.h>
 #endif  #endif
   
Line 73  LDAP_BEGIN_DECL Line 94  LDAP_BEGIN_DECL
 typedef cthread_t               ldap_int_thread_t;  typedef cthread_t               ldap_int_thread_t;
 typedef struct mutex            ldap_int_thread_mutex_t;  typedef struct mutex            ldap_int_thread_mutex_t;
 typedef struct condition        ldap_int_thread_cond_t;  typedef struct condition        ldap_int_thread_cond_t;
   typedef cthread_key_t           ldap_int_thread_key_t;
   
   #ifndef LDAP_INT_MUTEX_NULL
   #define LDAP_INT_MUTEX_NULL     MUTEX_INITIALIZER
   #define LDAP_INT_MUTEX_FIRSTCREATE(m)   ((void) 0)
   #endif
   
 LDAP_END_DECL  LDAP_END_DECL
   
Line 91  LDAP_BEGIN_DECL Line 118  LDAP_BEGIN_DECL
 typedef pth_t           ldap_int_thread_t;  typedef pth_t           ldap_int_thread_t;
 typedef pth_mutex_t     ldap_int_thread_mutex_t;  typedef pth_mutex_t     ldap_int_thread_mutex_t;
 typedef pth_cond_t      ldap_int_thread_cond_t;  typedef pth_cond_t      ldap_int_thread_cond_t;
   typedef pth_key_t       ldap_int_thread_key_t;
   
 #if 0  #if 0
 #define LDAP_THREAD_HAVE_RDWR 1  #define LDAP_THREAD_HAVE_RDWR 1
 typedef pth_rwlock_t ldap_pvt_thread_rdwr_t;  typedef pth_rwlock_t ldap_int_thread_rdwr_t;
   #endif
   
   #ifndef LDAP_INT_MUTEX_NULL
   #define LDAP_INT_MUTEX_NULL     PTH_MUTEX_INIT
   #define LDAP_INT_MUTEX_FIRSTCREATE(m)   ((void) 0)
 #endif  #endif
   
 LDAP_END_DECL  LDAP_END_DECL
Line 114  LDAP_BEGIN_DECL Line 147  LDAP_BEGIN_DECL
 typedef thread_t                ldap_int_thread_t;  typedef thread_t                ldap_int_thread_t;
 typedef mutex_t                 ldap_int_thread_mutex_t;  typedef mutex_t                 ldap_int_thread_mutex_t;
 typedef cond_t                  ldap_int_thread_cond_t;  typedef cond_t                  ldap_int_thread_cond_t;
   typedef thread_key_t    ldap_int_thread_key_t;
   
 #define HAVE_REENTRANT_FUNCTIONS 1  #define HAVE_REENTRANT_FUNCTIONS 1
   
Line 124  typedef cond_t   ldap_int_thread_cond_t; Line 158  typedef cond_t   ldap_int_thread_cond_t;
 #define LDAP_THREAD_HAVE_SETCONCURRENCY 1  #define LDAP_THREAD_HAVE_SETCONCURRENCY 1
 #endif  #endif
   
 LDAP_END_DECL  #ifndef LDAP_INT_MUTEX_NULL
   #define LDAP_INT_MUTEX_NULL     DEFAULTMUTEX
   #define LDAP_INT_MUTEX_FIRSTCREATE(m)   ((void) 0)
   #endif
   
 #elif defined( HAVE_LWP )  #elif defined(HAVE_NT_THREADS)
 /*************************************  /*************************************
  *                                   *   *                                   *
  * thread definitions for SunOS LWP  *   * thread definitions for NT threads *
  *                                   *   *                                   *
  *************************************/   *************************************/
   
 #include <lwp/lwp.h>  
 #include <lwp/stackdep.h>  
 #define LDAP_THREAD_HAVE_SLEEP 1  
   
 LDAP_BEGIN_DECL  
   
 typedef thread_t                ldap_int_thread_t;  
 typedef mon_t                   ldap_int_thread_mutex_t;  
 struct ldap_int_thread_lwp_cv {  
         int             lcv_created;  
         cv_t            lcv_cv;  
 };  
 typedef struct ldap_int_thread_lwp_cv ldap_int_thread_cond_t;  
   
 #define HAVE_REENTRANT_FUNCTIONS 1  
   
 LDAP_END_DECL  
   
 #elif defined(HAVE_NT_THREADS)  
   
 #include <process.h>  #include <process.h>
 #include <windows.h>  #include <windows.h>
   
Line 161  LDAP_BEGIN_DECL Line 178  LDAP_BEGIN_DECL
 typedef unsigned long   ldap_int_thread_t;  typedef unsigned long   ldap_int_thread_t;
 typedef HANDLE  ldap_int_thread_mutex_t;  typedef HANDLE  ldap_int_thread_mutex_t;
 typedef HANDLE  ldap_int_thread_cond_t;  typedef HANDLE  ldap_int_thread_cond_t;
   typedef DWORD   ldap_int_thread_key_t;
   
   #ifndef LDAP_INT_MUTEX_NULL
   #define LDAP_INT_MUTEX_NULL             ((HANDLE)0)
   #define LDAP_INT_MUTEX_FIRSTCREATE(m) \
                   ((void) ((m) || ldap_int_thread_mutex_init(&(m))))
   #endif
   
 LDAP_END_DECL  LDAP_END_DECL
   
 #else  #else
   
 /***********************************  /***********************************
  *                                 *   *                                 *
  * thread definitions for no       *   * thread definitions for no       *
Line 182  LDAP_BEGIN_DECL Line 205  LDAP_BEGIN_DECL
 typedef int                     ldap_int_thread_t;  typedef int                     ldap_int_thread_t;
 typedef int                     ldap_int_thread_mutex_t;  typedef int                     ldap_int_thread_mutex_t;
 typedef int                     ldap_int_thread_cond_t;  typedef int                     ldap_int_thread_cond_t;
   typedef int                     ldap_int_thread_key_t;
   
 #define LDAP_THREAD_HAVE_TPOOL 1  #define LDAP_THREAD_HAVE_TPOOL 1
 typedef int                     ldap_int_thread_pool_t;  typedef int                     ldap_int_thread_pool_t;
   
   #ifndef LDAP_INT_MUTEX_NULL
   #define LDAP_INT_MUTEX_NULL                             0
   #define LDAP_INT_MUTEX_FIRSTCREATE(m)   ((void) 0)
   #endif
   
 LDAP_END_DECL  LDAP_END_DECL
   
 #endif /* no threads support */  #endif /* no threads support */
   
   
 LDAP_BEGIN_DECL  LDAP_BEGIN_DECL
   
 LDAP_F(int) ldap_int_thread_initialize LDAP_P(( void ));  #ifndef ldap_int_thread_equal
 LDAP_F(int) ldap_int_thread_destroy LDAP_P(( void ));  #define ldap_int_thread_equal(a, b)     ((a) == (b))
   #endif
   
   #ifndef LDAP_THREAD_HAVE_RDWR
   typedef struct ldap_int_thread_rdwr_s * ldap_int_thread_rdwr_t;
   #endif
   
 LDAP_F(int) ldap_int_thread_pool_startup ( void );  LDAP_F(int) ldap_int_thread_pool_startup ( void );
 LDAP_F(int) ldap_int_thread_pool_shutdown ( void );  LDAP_F(int) ldap_int_thread_pool_shutdown ( void );
   
Line 201  LDAP_F(int) ldap_int_thread_pool_shutdow Line 237  LDAP_F(int) ldap_int_thread_pool_shutdow
 typedef struct ldap_int_thread_pool_s * ldap_int_thread_pool_t;  typedef struct ldap_int_thread_pool_s * ldap_int_thread_pool_t;
 #endif  #endif
   
   typedef struct ldap_int_thread_rmutex_s * ldap_int_thread_rmutex_t;
 LDAP_END_DECL  LDAP_END_DECL
   
   
   #if defined(LDAP_THREAD_DEBUG) && !((LDAP_THREAD_DEBUG +0) & 2U)
   #define LDAP_THREAD_DEBUG_WRAP 1
   #endif
   
   #ifdef LDAP_THREAD_DEBUG_WRAP
   /**************************************
    *                                    *
    * definitions for type-wrapped debug *
    *                                    *
    **************************************/
   
   LDAP_BEGIN_DECL
   
   #ifndef LDAP_UINTPTR_T  /* May be configured in CPPFLAGS */
   #define LDAP_UINTPTR_T  unsigned long
   #endif
   
   typedef enum {
           ldap_debug_magic =      -(int) (((unsigned)-1)/19)
   } ldap_debug_magic_t;
   
   typedef enum {
           /* Could fill in "locked" etc here later */
           ldap_debug_state_inited = (int) (((unsigned)-1)/11),
           ldap_debug_state_destroyed
   } ldap_debug_state_t;
   
   typedef struct {
           /* Enclosed in magic numbers in the hope of catching overwrites */
           ldap_debug_magic_t      magic;  /* bit pattern to recognize usages  */
           LDAP_UINTPTR_T          self;   /* ~(LDAP_UINTPTR_T)&(this struct) */
           union ldap_debug_mem_u {        /* Dummy memory reference */
                   unsigned char   *ptr;
                   LDAP_UINTPTR_T  num;
           } mem;
           ldap_debug_state_t      state;  /* doubles as another magic number */
   } ldap_debug_usage_info_t;
   
   typedef struct {
           ldap_int_thread_mutex_t wrapped;
           ldap_debug_usage_info_t usage;
           ldap_int_thread_t       owner;
   } ldap_debug_thread_mutex_t;
   
   #define LDAP_DEBUG_MUTEX_NULL   {LDAP_INT_MUTEX_NULL, {0,0,{0},0} /*,owner*/}
   #define LDAP_DEBUG_MUTEX_FIRSTCREATE(m) \
           ((void) ((m).usage.state || ldap_pvt_thread_mutex_init(&(m))))
   
   typedef struct {
           ldap_int_thread_cond_t  wrapped;
           ldap_debug_usage_info_t usage;
   } ldap_debug_thread_cond_t;
   
   typedef struct {
           ldap_int_thread_rdwr_t  wrapped;
           ldap_debug_usage_info_t usage;
   } ldap_debug_thread_rdwr_t;
   
   #ifndef NDEBUG
   #define LDAP_INT_THREAD_ASSERT_MUTEX_OWNER(mutex) \
           ldap_debug_thread_assert_mutex_owner( \
                   __FILE__, __LINE__, "owns(" #mutex ")", mutex )
   LDAP_F(void) ldap_debug_thread_assert_mutex_owner LDAP_P((
           LDAP_CONST char *file,
           int line,
           LDAP_CONST char *msg,
           ldap_debug_thread_mutex_t *mutex ));
   #endif /* NDEBUG */
   
   LDAP_END_DECL
   
   #endif /* LDAP_THREAD_DEBUG_WRAP */
   
 #endif /* _LDAP_INT_THREAD_H */  #endif /* _LDAP_INT_THREAD_H */

Removed from v.1.10.2.1  
changed lines
  Added in v.1.35


______________
© Copyright 1998-2020, OpenLDAP Foundation, info@OpenLDAP.org