X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;ds=sidebyside;f=include%2Fldap_int_thread.h;h=759c951e22272946d806cff073acf35f4981f01d;hb=8fef28c0592e1c833ac1e3877493539a65cfc8de;hp=1f2e81dd5856a03f748c70c8bba98b0c92c551e0;hpb=e5f83e20b514dca2b3e7522bd658fc328c663965;p=openldap diff --git a/include/ldap_int_thread.h b/include/ldap_int_thread.h index 1f2e81dd58..759c951e22 100644 --- a/include/ldap_int_thread.h +++ b/include/ldap_int_thread.h @@ -2,7 +2,7 @@ /* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * - * Copyright 1998-2006 The OpenLDAP Foundation. + * Copyright 1998-2010 The OpenLDAP Foundation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -44,6 +44,7 @@ LDAP_BEGIN_DECL 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; +typedef pthread_key_t ldap_int_thread_key_t; #define ldap_int_thread_equal(a, b) pthread_equal((a), (b)) @@ -63,7 +64,7 @@ typedef pthread_cond_t ldap_int_thread_cond_t; #define LDAP_THREAD_HAVE_SETCONCURRENCY 1 #endif -#if 0 && defined( HAVE_PTHREAD_RWLOCK_DESTROY ) +#if defined( HAVE_PTHREAD_RWLOCK_DESTROY ) #define LDAP_THREAD_HAVE_RDWR 1 typedef pthread_rwlock_t ldap_int_thread_rdwr_t; #endif @@ -79,7 +80,7 @@ LDAP_END_DECL #if defined( HAVE_MACH_CTHREADS_H ) # include -#elif defined( HAVE_CTHREAD_H +#elif defined( HAVE_CTHREADS_H ) # include #endif @@ -88,6 +89,7 @@ LDAP_BEGIN_DECL typedef cthread_t ldap_int_thread_t; typedef struct mutex ldap_int_thread_mutex_t; typedef struct condition ldap_int_thread_cond_t; +typedef cthread_key_t ldap_int_thread_key_t; LDAP_END_DECL @@ -106,6 +108,7 @@ LDAP_BEGIN_DECL typedef pth_t ldap_int_thread_t; typedef pth_mutex_t ldap_int_thread_mutex_t; typedef pth_cond_t ldap_int_thread_cond_t; +typedef pth_key_t ldap_int_thread_key_t; #if 0 #define LDAP_THREAD_HAVE_RDWR 1 @@ -129,6 +132,7 @@ LDAP_BEGIN_DECL typedef thread_t ldap_int_thread_t; typedef mutex_t ldap_int_thread_mutex_t; typedef cond_t ldap_int_thread_cond_t; +typedef thread_key_t ldap_int_thread_key_t; #define HAVE_REENTRANT_FUNCTIONS 1 @@ -181,6 +185,7 @@ LDAP_BEGIN_DECL typedef unsigned long ldap_int_thread_t; typedef HANDLE ldap_int_thread_mutex_t; typedef HANDLE ldap_int_thread_cond_t; +typedef DWORD ldap_int_thread_key_t; LDAP_END_DECL @@ -201,6 +206,7 @@ LDAP_BEGIN_DECL typedef int ldap_int_thread_t; typedef int ldap_int_thread_mutex_t; typedef int ldap_int_thread_cond_t; +typedef int ldap_int_thread_key_t; #define LDAP_THREAD_HAVE_TPOOL 1 typedef int ldap_int_thread_pool_t; @@ -227,6 +233,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 +254,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 {