typedef ldap_int_thread_rdwr_t ldap_pvt_thread_rdwr_t;
#endif
typedef ldap_int_thread_rmutex_t ldap_pvt_thread_rmutex_t;
+typedef ldap_int_thread_key_t ldap_pvt_thread_key_t;
#endif /* !LDAP_PVT_THREAD_H_DONE */
#define ldap_pvt_thread_equal ldap_int_thread_equal
LDAP_F( int )
ldap_pvt_thread_rdwr_wunlock LDAP_P((ldap_pvt_thread_rdwr_t *rdwrp));
+LDAP_F( int )
+ldap_pvt_thread_key_create LDAP_P((ldap_pvt_thread_key_t *keyp));
+
+LDAP_F( int )
+ldap_pvt_thread_key_destroy LDAP_P((ldap_pvt_thread_key_t key));
+
+LDAP_F( int )
+ldap_pvt_thread_key_setdata LDAP_P((ldap_pvt_thread_key_t key, void *data));
+
+LDAP_F( int )
+ldap_pvt_thread_key_getdata LDAP_P((ldap_pvt_thread_key_t key, void **data));
+
#ifdef LDAP_DEBUG
LDAP_F( int )
ldap_pvt_thread_rdwr_readers LDAP_P((ldap_pvt_thread_rdwr_t *rdwrp));
LDAP_PVT_THREAD_POOL_PARAM_OPEN,
LDAP_PVT_THREAD_POOL_PARAM_STARTING,
LDAP_PVT_THREAD_POOL_PARAM_ACTIVE,
+ LDAP_PVT_THREAD_POOL_PARAM_PAUSING,
LDAP_PVT_THREAD_POOL_PARAM_PENDING,
LDAP_PVT_THREAD_POOL_PARAM_BACKLOAD,
LDAP_PVT_THREAD_POOL_PARAM_ACTIVE_MAX,
ldap_pvt_thread_pool_keyfree_t **kfree ));
LDAP_F( int )
-ldap_pvt_thread_pool_setkey LDAP_P((
+ldap_pvt_thread_pool_setkey_x LDAP_P((
void *ctx,
void *key,
void *data,
- ldap_pvt_thread_pool_keyfree_t *kfree ));
+ ldap_pvt_thread_pool_keyfree_t *kfree,
+ void **olddatap,
+ ldap_pvt_thread_pool_keyfree_t **oldkfreep ));
+
+#define ldap_pvt_thread_pool_setkey( ctx, key, data, kfree ) \
+ ldap_pvt_thread_pool_setkey_x( (ctx), (key), (data), (kfree), NULL, NULL )
LDAP_F( void )
ldap_pvt_thread_pool_purgekey LDAP_P(( void *key ));