X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=include%2Flthread.h;h=3485406d93652ba0626294d9a6ee8211eef6200f;hb=9697ad210a9e288c26dc3a62df87128ecc3a9f20;hp=b79498929d97181352fb2f8035defa3016620028;hpb=5b62482fac5183d5a137f7e99b23012df16d4793;p=openldap diff --git a/include/lthread.h b/include/lthread.h index b79498929d..3485406d93 100644 --- a/include/lthread.h +++ b/include/lthread.h @@ -19,15 +19,28 @@ LDAP_BEGIN_DECL -#if defined( HAVE_DCE ) -/* dce threads are preemptive */ - +#if !defined( HAVE_PTHREAD_ATTR_INIT ) && \ + defined( HAVE_PTHREAD_ATTR_CREATE ) #define pthread_attr_init( a ) pthread_attr_create( a ) +#endif + +#if !defined( HAVE_PTHREAD_ATTR_DESTROY ) && \ + defined( HAVE_PTHREAD_ATTR_DELETE ) #define pthread_attr_destroy( a ) pthread_attr_delete( a ) +#endif + +#if !defined( HAVE_PTHREAD_ATTR_SETDETACHSTATE ) && \ + defined( HAVE_PTHREAD_ATTR_SETDETACH_NP ) #define pthread_attr_setdetachstate( a, b ) \ pthread_attr_setdetach_np( a, b ) +#endif -#elif !defined(HAVE_PTHREADS_D4) +#ifndef HAVE_PTHREAD_KILL +/* missing pthread_kill(), define prototype */ +LDAP_F void pthread_kill LDAP_P(( pthread_t tid, int sig )); +#endif + +#ifndef HAVE_PTHREADS_D4 #define pthread_mutexattr_default NULL #define pthread_condattr_default NULL @@ -106,8 +119,6 @@ typedef void *(*VFP)(); #define PTHREAD_SHARE_PRIVATE USYNC_THREAD #define PTHREAD_SHARE_PROCESS USYNC_PROCESS - -#if !defined(__SunOS_5_6) /* thread attributes and thread type */ typedef int pthread_attr_t; typedef thread_t pthread_t; @@ -119,7 +130,6 @@ typedef mutex_t pthread_mutex_t; /* condition variable attributes and condition variable type */ typedef int pthread_condattr_t; typedef cond_t pthread_cond_t; -#endif /* ! sunos56 */ LDAP_END_DECL @@ -135,6 +145,9 @@ LDAP_END_DECL LDAP_BEGIN_DECL +stkalign_t *get_stack( int *stacknop ); +void free_stack( int *stackno ); + typedef void *(*VFP)(); /* thread attributes and thread type */ @@ -169,6 +182,42 @@ typedef struct lwpcv { LDAP_END_DECL +#elif HAVE_NT_THREADS + +#include +#include + +typedef void (*VFP)(void*); + +/* thread attributes and thread type */ +typedef int pthread_attr_t; +typedef HANDLE pthread_t; + +/* default attr states */ +#define pthread_mutexattr_default NULL +#define pthread_condattr_default NULL + +/* thread state - joinable or not */ +#define PTHREAD_CREATE_JOINABLE 0 +#define PTHREAD_CREATE_DETACHED 0 +/* thread scope - who is in scheduling pool */ +#define PTHREAD_SCOPE_PROCESS 0 +#define PTHREAD_SCOPE_SYSTEM 0 + +/* mutex attributes and mutex type */ +typedef int pthread_mutexattr_t; +typedef HANDLE pthread_mutex_t; + +/* mutex and condition variable scope - process or system */ +#define PTHREAD_SHARE_PRIVATE USYNC_THREAD +#define PTHREAD_SHARE_PROCESS USYNC_PROCESS + +/* condition variable attributes and condition variable type */ +typedef int pthread_condattr_t; +typedef HANDLE pthread_cond_t; +typedef int any_t; + + #else /*********************************** @@ -178,12 +227,12 @@ LDAP_END_DECL * * ***********************************/ +LDAP_BEGIN_DECL + #ifndef NO_THREADS #define NO_THREADS 1 #endif -LDAP_BEGIN_DECL - typedef void *(*VFP)(); /* thread attributes and thread type */