X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=include%2Fldap_int_thread.h;h=307d85c86ebfafaa42a2a33d099551b03736033a;hb=f29447d9de03edd65d7f0c43b4c0df3270f3ca8f;hp=4f398498dedffb16f07a34c95f0566211885fe74;hpb=9ef1a740c24a155cfc7e7088f5da50de4dbc5088;p=openldap diff --git a/include/ldap_int_thread.h b/include/ldap_int_thread.h index 4f398498de..307d85c86e 100644 --- a/include/ldap_int_thread.h +++ b/include/ldap_int_thread.h @@ -1,14 +1,28 @@ +/* ldap_int_thread.h - ldap internal thread wrappers header file */ /* $OpenLDAP$ */ -/* - * Copyright 1998-2000 The OpenLDAP Foundation, Redwood City, California, USA +/* This work is part of OpenLDAP Software . + * + * Copyright 1998-2005 The OpenLDAP Foundation. * All rights reserved. * - * Redistribution and use in source and binary forms are permitted only - * as authorized by the OpenLDAP Public License. A copy of this - * license is available at http://www.OpenLDAP.org/license.html or - * in file LICENSE in the top-level directory of the distribution. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted only as authorized by the OpenLDAP + * Public License. + * + * A copy of this license is available in file LICENSE in the + * top-level directory of the distribution or, alternatively, at + * . */ -/* 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 #define _LDAP_INT_THREAD_H @@ -31,6 +45,8 @@ typedef pthread_t ldap_int_thread_t; typedef pthread_mutex_t ldap_int_thread_mutex_t; typedef pthread_cond_t ldap_int_thread_cond_t; +#define ldap_int_thread_equal(a, b) pthread_equal((a), (b)) + #if defined( _POSIX_REENTRANT_FUNCTIONS ) || \ defined( _POSIX_THREAD_SAFE_FUNCTIONS ) || \ defined( _POSIX_THREADSAFE_FUNCTIONS ) @@ -49,7 +65,7 @@ typedef pthread_cond_t ldap_int_thread_cond_t; #if 0 && defined( HAVE_PTHREAD_RWLOCK_DESTROY ) #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 LDAP_END_DECL @@ -61,7 +77,11 @@ LDAP_END_DECL * * **********************************/ -#include +#if defined( HAVE_MACH_CTHREADS_H ) +# include +#elif defined( HAVE_CTHREAD_H +# include +#endif LDAP_BEGIN_DECL @@ -89,7 +109,7 @@ typedef pth_cond_t ldap_int_thread_cond_t; #if 0 #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 LDAP_END_DECL @@ -147,6 +167,11 @@ typedef struct ldap_int_thread_lwp_cv ldap_int_thread_cond_t; LDAP_END_DECL #elif defined(HAVE_NT_THREADS) +/************************************* + * * + * thread definitions for NT threads * + * * + *************************************/ #include #include @@ -160,7 +185,6 @@ typedef HANDLE ldap_int_thread_cond_t; LDAP_END_DECL #else - /*********************************** * * * thread definitions for no * @@ -185,10 +209,17 @@ LDAP_END_DECL #endif /* no threads support */ + LDAP_BEGIN_DECL -LDAP_F(int) ldap_int_thread_initialize LDAP_P(( void )); -LDAP_F(int) ldap_int_thread_destroy LDAP_P(( void )); +#ifndef ldap_int_thread_equal +#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_shutdown ( void ); @@ -198,4 +229,46 @@ typedef struct ldap_int_thread_pool_s * ldap_int_thread_pool_t; 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 union { + unsigned char *ptr; + LDAP_UINTPTR_T num; +} ldap_debug_usage_info_t; + +typedef struct { + ldap_int_thread_mutex_t wrapped; + ldap_debug_usage_info_t usage; +} ldap_debug_thread_mutex_t; + +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; + +LDAP_END_DECL + +#endif /* LDAP_THREAD_DEBUG_WRAP */ + #endif /* _LDAP_INT_THREAD_H */