--- include/ldap_int_thread.h 2007/01/10 23:55:26 1.25 +++ include/ldap_int_thread.h 2010/10/22 19:45:48 1.32 @@ -1,8 +1,8 @@ /* ldap_int_thread.h - ldap internal thread wrappers header file */ -/* $OpenLDAP: pkg/ldap/include/ldap_int_thread.h,v 1.24 2007/01/10 00:29:16 hyc Exp $ */ +/* $OpenLDAP: pkg/ldap/include/ldap_int_thread.h,v 1.31 2010/10/12 08:26:32 hyc Exp $ */ /* This work is part of OpenLDAP Software . * - * Copyright 1998-2007 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)) @@ -68,6 +69,11 @@ typedef pthread_cond_t ldap_int_thread_ typedef pthread_rwlock_t ldap_int_thread_rdwr_t; #endif +#ifndef LDO_MUTEX_NULL +#define LDO_MUTEX_NULL ,PTHREAD_MUTEX_INITIALIZER +#define MUTEX_FIRSTCREATE(m) +#endif + LDAP_END_DECL #elif defined ( HAVE_MACH_CTHREADS ) @@ -79,7 +85,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 +94,12 @@ 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; + +#ifndef LDO_MUTEX_NULL +#define LDO_MUTEX_NULL ,MUTEX_INITIALIZER +#define MUTEX_FIRSTCREATE(m) +#endif LDAP_END_DECL @@ -106,12 +118,18 @@ 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 typedef pth_rwlock_t ldap_int_thread_rdwr_t; #endif +#ifndef LDO_MUTEX_NULL +#define LDO_MUTEX_NULL ,PTH_MUTEX_INIT +#define MUTEX_FIRSTCREATE(m) +#endif + LDAP_END_DECL #elif defined( HAVE_THR ) @@ -129,6 +147,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 @@ -139,32 +158,10 @@ typedef cond_t ldap_int_thread_cond_t; #define LDAP_THREAD_HAVE_SETCONCURRENCY 1 #endif -LDAP_END_DECL - -#elif defined( HAVE_LWP ) -/************************************* - * * - * thread definitions for SunOS LWP * - * * - *************************************/ - -#include -#include -#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 +#ifndef LDO_MUTEX_NULL +#define LDO_MUTEX_NULL ,DEFAULTMUTEX +#define MUTEX_FIRSTCREATE(m) +#endif #elif defined(HAVE_NT_THREADS) /************************************* @@ -181,6 +178,12 @@ 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; + +#ifndef LDO_MUTEX_NULL +#define LDO_MUTEX_NULL ,(HANDLE)0 +#define MUTEX_FIRSTCREATE(m) (!m ? 0 : ldap_pvt_thread_mutex_init(&m) ) +#endif LDAP_END_DECL @@ -201,10 +204,16 @@ 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; +#ifndef LDO_MUTEX_NULL +#define LDO_MUTEX_NULL +#define MUTEX_FIRSTCREATE(m) +#endif + LDAP_END_DECL #endif /* no threads support */