X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=include%2Fldap_int_thread.h;h=46c79ae8de6d59b29b63961d5dd23c22070dd80f;hb=e04275ca048e26a3b83eadbb0628eeb699222aa8;hp=c730f729507f0253b047617715b9eb0d9d1f68c0;hpb=7a113f0759d03783d3ff90b46532bae68434e2b0;p=openldap diff --git a/include/ldap_int_thread.h b/include/ldap_int_thread.h index c730f72950..46c79ae8de 100644 --- a/include/ldap_int_thread.h +++ b/include/ldap_int_thread.h @@ -227,6 +227,7 @@ LDAP_F(int) ldap_int_thread_pool_shutdown ( void ); typedef struct ldap_int_thread_pool_s * ldap_int_thread_pool_t; #endif +typedef struct ldap_int_thread_rmutex_s * ldap_int_thread_rmutex_t; LDAP_END_DECL @@ -247,9 +248,25 @@ LDAP_BEGIN_DECL #define LDAP_UINTPTR_T unsigned long #endif -typedef union { - unsigned char *ptr; - LDAP_UINTPTR_T num; +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 { @@ -271,7 +288,7 @@ typedef struct { #ifndef NDEBUG #define LDAP_INT_THREAD_ASSERT_MUTEX_OWNER(mutex) \ ldap_debug_thread_assert_mutex_owner( \ - _FILE__, __LINE__, "owns(" #mutex ")", mutex ) + __FILE__, __LINE__, "owns(" #mutex ")", mutex ) LDAP_F(void) ldap_debug_thread_assert_mutex_owner LDAP_P(( LDAP_CONST char *file, int line,