diff options
author | Steve Huston <shuston@riverace.com> | 1998-08-17 18:08:56 +0000 |
---|---|---|
committer | Steve Huston <shuston@riverace.com> | 1998-08-17 18:08:56 +0000 |
commit | f9be9fc2a65f15f80eaef18e13433252904e14ba (patch) | |
tree | 16a0799440e16dc5f1a5cc39ca5164a04ef1c3f3 | |
parent | d098dc24f9165c6e1099289ff5b38bd202662ffe (diff) | |
download | ATCD-f9be9fc2a65f15f80eaef18e13433252904e14ba.tar.gz |
Changed to not use ACE_HAS_DCETHREADS (or DCE_DRAFT4_THREADS) - unify around the
new symbols: ACE_HAS_PTHREADS, which must be combined with one of:
ACE_HAS_PTHREADS_DRAFT4, ACE_HAS_PTHREADS_DRAFT6, ACE_HAS_PTHREADS_DRAFT7, or
ACE_HAS_PTHREADS_STD.
-rw-r--r-- | ace/OS.cpp | 267 | ||||
-rw-r--r-- | ace/OS.h | 44 | ||||
-rw-r--r-- | ace/OS.i | 419 | ||||
-rw-r--r-- | ace/Sched_Params.cpp | 12 | ||||
-rw-r--r-- | ace/Synch.cpp | 2 |
5 files changed, 404 insertions, 340 deletions
diff --git a/ace/OS.cpp b/ace/OS.cpp index 33d8c5519a9..51c104a5e94 100644 --- a/ace/OS.cpp +++ b/ace/OS.cpp @@ -627,12 +627,12 @@ ACE_OS::mutex_lock_cleanup (void *mutex) { // ACE_TRACE ("ACE_OS::mutex_lock_cleanup"); #if defined (ACE_HAS_THREADS) -# if defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) +# if defined (ACE_HAS_PTHREADS) ACE_mutex_t *p_lock = (ACE_mutex_t *) mutex; ACE_OS::mutex_unlock (p_lock); # else ACE_UNUSED_ARG (mutex); -# endif /* ACE_HAS_DCETHREADS */ +# endif /* ACE_HAS_PTHREADS */ #else ACE_UNUSED_ARG (mutex); #endif /* ACE_HAS_THREADS */ @@ -1040,7 +1040,7 @@ ACE_OS::sched_params (const ACE_Sched_Params &sched_params, int, -1); #elif defined (ACE_HAS_STHREADS) return ACE_OS::set_scheduling_params (sched_params, id); -#elif defined (ACE_HAS_DCETHREADS) || (defined (ACE_HAS_PTHREADS)) && !defined (ACE_LACKS_SETSCHED) +#elif defined (ACE_HAS_PTHREADS) && !defined (ACE_LACKS_SETSCHED) ACE_UNUSED_ARG (id); if (sched_params.quantum () != ACE_Time_Value::zero) { @@ -1076,7 +1076,7 @@ ACE_OS::sched_params (const ACE_Sched_Params &sched_params, { ACE_thread_t thr_id = ACE_OS::thr_self (); -# if defined (ACE_HAS_DCE_DRAFT4_THREADS) +# if defined (ACE_HAS_PTHREADS_DRAFT4) return (::pthread_setscheduler(thr_id, sched_params.policy (), sched_params.priority()) == -1 ? -1 : 0); @@ -1088,7 +1088,7 @@ ACE_OS::sched_params (const ACE_Sched_Params &sched_params, ¶m), result), int, -1); -# endif /* ACE_HAS_DCE_DRAFT4_THREADS */ +# endif /* ACE_HAS_PTHREADS_DRAFT4 */ } else // sched_params.scope () == ACE_SCOPE_LWP, which isn't POSIX @@ -2244,20 +2244,16 @@ ACE_OS::thr_create (ACE_THR_FUNC func, if (thr_handle == 0) thr_handle = &tmp_handle; -# if defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) +# if defined (ACE_HAS_PTHREADS) int result; pthread_attr_t attr; -# if defined (ACE_HAS_DCETHREADS) +# if defined (ACE_HAS_PTHREADS_DRAFT4) if (::pthread_attr_create (&attr) != 0) -# else /* ACE_HAS_DCETHREADS */ +# else /* ACE_HAS_PTHREADS_DRAFT4 */ if (::pthread_attr_init (&attr) != 0) -# endif /* ACE_HAS_DCETHREADS */ +# endif /* ACE_HAS_PTHREADS_DRAFT4 */ return -1; -# if !defined (ACE_LACKS_SETSCHED) - // The PRIORITY stuff used to be here...-cjc -# endif /* ACE_LACKS_SETSCHED */ - // *** Set Stack Size # if defined (ACE_NEEDS_HUGE_THREAD_STACKSIZE) @@ -2285,13 +2281,17 @@ ACE_OS::thr_create (ACE_THR_FUNC func, # endif /* PTHREAD_STACK_MIN */ # if !defined (ACE_LACKS_THREAD_STACK_SIZE) // JCEJ 12/17/96 +# if defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6) if (::pthread_attr_setstacksize (&attr, size) != 0) +# else + if (ACE_ADAPT_RETVAL(pthread_attr_setstacksize (&attr, size), result) == -1) +# endif /* ACE_HAS_PTHREADS_DRAFT4, 6 */ { -# if defined (ACE_HAS_DCETHREADS) +# if defined (ACE_HAS_PTHREADS_DRAFT4) ::pthread_attr_delete (&attr); -# else /* ACE_HAS_DCETHREADS */ +# else /* ACE_HAS_PTHREADS_DRAFT4 */ ::pthread_attr_destroy (&attr); -# endif /* ACE_HAS_DCETHREADS */ +# endif /* ACE_HAS_PTHREADS_DRAFT4 */ return -1; } # else @@ -2305,11 +2305,11 @@ ACE_OS::thr_create (ACE_THR_FUNC func, { if (::pthread_attr_setstackaddr (&attr, stack) != 0) { -# if defined (ACE_HAS_DCETHREADS) +# if defined (ACE_HAS_PTHREADS_DRAFT4) ::pthread_attr_delete (&attr); -# else /* ACE_HAS_DCETHREADS */ +# else /* ACE_HAS_PTHREADS_DRAFT4 */ ::pthread_attr_destroy (&attr); -# endif /* ACE_HAS_DCETHREADS */ +# endif /* ACE_HAS_PTHREADS_DRAFT4 */ return -1; } } @@ -2330,23 +2330,24 @@ ACE_OS::thr_create (ACE_THR_FUNC func, if (ACE_BIT_ENABLED (flags, THR_DETACHED)) dstate = PTHREAD_CREATE_DETACHED; -# if defined (ACE_HAS_DCETHREADS) +# if defined (ACE_HAS_PTHREADS_DRAFT4) if (::pthread_attr_setdetach_np (&attr, dstate) != 0) -# else /* ACE_HAS_DCETHREADS */ -# if defined (ACE_HAS_PTHREAD_DSTATE_PTR) +# else /* ACE_HAS_PTHREADS_DRAFT4 */ +# if defined (ACE_HAS_PTHREADS_DRAFT6) if (::pthread_attr_setdetachstate (&attr, &dstate) != 0) # else - if (::pthread_attr_setdetachstate (&attr, dstate) != 0) -# endif /* ACE_HAS_PTHREAD_DSTATE_PTR */ -# endif /* ACE_HAS_DCETHREADS */ - { -# if defined (ACE_HAS_DCETHREADS) - ::pthread_attr_delete (&attr); -# else /* ACE_HAS_DCETHREADS */ - ::pthread_attr_destroy (&attr); -# endif /* ACE_HAS_DCETHREADS */ - return -1; - } + if (ACE_ADAPT_RETVAL(::pthread_attr_setdetachstate (&attr, dstate), + result) != 0) +# endif /* ACE_HAS_PTHREADS_DRAFT6 */ +# endif /* ACE_HAS_PTHREADS_DRAFT4 */ + { +# if defined (ACE_HAS_PTHREADS_DRAFT4) + ::pthread_attr_delete (&attr); +# else /* ACE_HAS_PTHREADS_DRAFT4 */ + ::pthread_attr_destroy (&attr); +# endif /* ACE_HAS_PTHREADS_DRAFT4 */ + return -1; + } } // Note: if ACE_LACKS_SETDETACH and THR_DETACHED is enabled, we @@ -2356,7 +2357,7 @@ ACE_OS::thr_create (ACE_THR_FUNC func, # endif /* ACE_LACKS_SETDETACH */ // *** Set Policy -# if !defined (ACE_LACKS_SETSCHED) || defined (ACE_HAS_DCETHREADS) +# if !defined (ACE_LACKS_SETSCHED) // If we wish to set the priority explicitly, we have to enable // explicit scheduling, and a policy, too. if (priority != ACE_DEFAULT_THREAD_PRIORITY) @@ -2398,26 +2399,8 @@ ACE_OS::thr_create (ACE_THR_FUNC func, # endif /* SCHED_IO */ else spolicy = SCHED_RR; -# endif /* ACE_HAS_ONLY_SCHED_OTHER */ -# if !defined (ACE_HAS_FSU_PTHREADS) -# if defined (ACE_HAS_DCETHREADS) - result = ::pthread_attr_setsched (&attr, spolicy); -# else /* ACE_HAS_DCETHREADS */ - result = ::pthread_attr_setschedpolicy (&attr, spolicy); -# endif /* ACE_HAS_DCETHREADS */ - if (result != 0) - { - // Preserve the errno value. - errno = result; -# if defined (ACE_HAS_DCETHREADS) - ::pthread_attr_delete (&attr); -# else /* ACE_HAS_DCETHREADS */ - ::pthread_attr_destroy (&attr); -# endif /* ACE_HAS_DCETHREADS */ - return -1; - } -# else +# if defined (ACE_HAS_FSU_PTHREADS) int ret; switch (spolicy) { @@ -2431,18 +2414,34 @@ ACE_OS::thr_create (ACE_THR_FUNC func, } if (ret != 0) { -# if defined (ACE_HAS_DCETHREADS) - ::pthread_attr_delete (&attr); -# else /* ACE_HAS_DCETHREADS */ ::pthread_attr_destroy (&attr); -# endif /* ACE_HAS_DCETHREADS */ return -1; } -# endif /* ACE_HAS_FSU_PTHREADS */ +# endif /* ACE_HAS_FSU_PTHREADS */ + +# endif /* ACE_HAS_ONLY_SCHED_OTHER */ + +# if defined (ACE_HAS_PTHREADS_DRAFT4) + result = ::pthread_attr_setsched (&attr, spolicy); +# elif defined (ACE_HAS_PTHREADS_DRAFT6) + result = ::pthread_attr_setschedpolicy (&attr, spolicy); +# else /* draft 7 or std */ + ACE_ADAPT_RETVAL(::pthread_attr_setschedpolicy (&attr, spolicy), + result); +# endif /* ACE_HAS_PTHREADS_DRAFT4 */ + if (result != 0) + { +# if defined (ACE_HAS_PTHREADS_DRAFT4) + ::pthread_attr_delete (&attr); +# else /* ACE_HAS_PTHREADS_DRAFT4 */ + ::pthread_attr_destroy (&attr); +# endif /* ACE_HAS_PTHREADS_DRAFT4 */ + return -1; + } } // *** Set Priority (use reasonable default priorities) -# if defined(ACE_HAS_PTHREADS_1003_DOT_1C) +# if defined(ACE_HAS_PTHREADS_STD) // If we wish to explicitly set a scheduling policy, we also // have to specify a priority. We choose a "middle" priority as // default. Maybe this is also necessary on other POSIX'ish @@ -2459,20 +2458,18 @@ ACE_OS::thr_create (ACE_THR_FUNC func, else // THR_SCHED_DEFAULT priority = ACE_THR_PRI_OTHER_DEF; } -# endif /* ACE_HAS_PTHREADS_1003_DOT_1C */ +# endif /* ACE_HAS_PTHREADS_STD */ if (priority != ACE_DEFAULT_THREAD_PRIORITY) { struct sched_param sparam; ACE_OS::memset ((void *) &sparam, 0, sizeof sparam); -# if defined (ACE_HAS_DCETHREADS) && !defined (ACE_HAS_DCE_DRAFT4_THREADS) - sparam.sched_priority = ACE_MIN (priority, PRIORITY_MAX); -# elif defined(ACE_HAS_IRIX62_THREADS) +# if defined(ACE_HAS_IRIX62_THREADS) sparam.sched_priority = ACE_MIN (priority, PTHREAD_MAX_PRIORITY); -# elif defined (PTHREAD_MAX_PRIORITY) && !defined(ACE_HAS_PTHREADS_1003_DOT_1C) +# elif defined (PTHREAD_MAX_PRIORITY) && !defined(ACE_HAS_PTHREADS_STD) /* For MIT pthreads... */ sparam.prio = ACE_MIN (priority, PTHREAD_MAX_PRIORITY); -# elif defined(ACE_HAS_PTHREADS_1003_DOT_1C) +# elif defined(ACE_HAS_PTHREADS_STD) && !defined (ACE_HAS_STHREADS) // The following code forces priority into range. if (ACE_BIT_ENABLED (flags, THR_SCHED_FIFO)) sparam.sched_priority = @@ -2483,6 +2480,8 @@ ACE_OS::thr_create (ACE_THR_FUNC func, else // Default policy, whether set or not sparam.sched_priority = ACE_MIN (ACE_THR_PRI_OTHER_MAX, ACE_MAX (ACE_THR_PRI_OTHER_MIN, priority)); +# elif defined (PRIORITY_MAX) + sparam.sched_priority = ACE_MIN (priority, PRIORITY_MAX); # else sparam.sched_priority = priority; # endif @@ -2506,20 +2505,20 @@ ACE_OS::thr_create (ACE_THR_FUNC func, if (priority > 0) # endif /* STHREADS */ { -# if defined (ACE_HAS_DCETHREADS) +# if defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6) result = ::pthread_attr_setprio (&attr, sparam.sched_priority); -# else /* ACE_HAS_DCETHREADS */ - result = ::pthread_attr_setschedparam (&attr, &sparam); -# endif /* ACE_HAS_DCETHREADS */ +# else /* this is draft 7 or std */ + ACE_ADAPT_RETVAL(::pthread_attr_setschedparam (&attr, &sparam), + result); +# endif /* ACE_HAS_PTHREADS_DRAFT4, 6 */ if (result != 0) { -# if defined (ACE_HAS_DCETHREADS) +# if defined (ACE_HAS_PTHREADS_DRAFT4) ::pthread_attr_delete (&attr); -# else /* ACE_HAS_DCETHREADS */ +# else /* ACE_HAS_PTHREADS_DRAFT4 */ ::pthread_attr_destroy (&attr); -# endif /* ACE_HAS_DCETHREADS */ - errno = result; +# endif /* ACE_HAS_PTHREADS_DRAFT4 */ return -1; } } @@ -2531,26 +2530,26 @@ ACE_OS::thr_create (ACE_THR_FUNC func, if (ACE_BIT_ENABLED (flags, THR_INHERIT_SCHED) || ACE_BIT_ENABLED (flags, THR_EXPLICIT_SCHED)) { -# if defined (ACE_HAS_DCETHREADS) +# if defined (ACE_HAS_PTHREADS_DRAFT4) int sched = PTHREAD_DEFAULT_SCHED; -# else /* ACE_HAS_DCETHREADS */ +# else /* ACE_HAS_PTHREADS_DRAFT4 */ int sched = PTHREAD_EXPLICIT_SCHED; -# endif /* ACE_HAS_DCETHREADS */ +# endif /* ACE_HAS_PTHREADS_DRAFT4 */ if (ACE_BIT_ENABLED (flags, THR_INHERIT_SCHED)) sched = PTHREAD_INHERIT_SCHED; if (::pthread_attr_setinheritsched (&attr, sched) != 0) { -# if defined (ACE_HAS_DCETHREADS) +# if defined (ACE_HAS_PTHREADS_DRAFT4) ::pthread_attr_delete (&attr); -# else /* ACE_HAS_DCETHREADS */ +# else /* ACE_HAS_PTHREADS_DRAFT4 */ ::pthread_attr_destroy (&attr); -# endif /* ACE_HAS_DCETHREADS */ +# endif /* ACE_HAS_PTHREADS_DRAFT4 */ return -1; } } -# else /* ACE_LACKS_SETSCHED || ACE_HAS_DCETHREADS */ +# else /* ACE_LACKS_SETSCHED */ ACE_UNUSED_ARG (priority); -# endif /* ACE_LACKS_SETSCHED || ACE_HAS_DCETHREADS */ +# endif /* ACE_LACKS_SETSCHED */ // *** Set Scope @@ -2564,11 +2563,11 @@ ACE_OS::thr_create (ACE_THR_FUNC func, if (::pthread_attr_setscope (&attr, scope) != 0) { -# if defined (ACE_HAS_DCETHREADS) +# if defined (ACE_HAS_PTHREADS_DRAFT4) ::pthread_attr_delete (&attr); -# else /* ACE_HAS_DCETHREADS */ +# else /* ACE_HAS_PTHREADS_DRAFT4 */ ::pthread_attr_destroy (&attr); -# endif /* ACE_HAS_DCETHREADS */ +# endif /* ACE_HAS_PTHREADS_DRAFT4 */ return -1; } } @@ -2611,27 +2610,39 @@ ACE_OS::thr_create (ACE_THR_FUNC func, } } -# if defined (ACE_HAS_DCETHREADS) -# if defined (ACE_HAS_DCE_DRAFT4_THREADS) +# if defined (ACE_HAS_PTHREADS_DRAFT4) ACE_OSCALL (::pthread_create (thr_id, attr, thread_args->entry_point (), thread_args), int, -1, result); -# if defined (ACE_LACKS_SETDETACH) +# if defined (ACE_LACKS_SETDETACH) if (ACE_BIT_ENABLED (flags, THR_DETACHED)) - ::pthread_detach (thr_id); -# endif /* ACE_LACKS_SETDETACH */ + { +# if defined (HPUX_10) + // HP-UX DCE threads' pthread_detach will smash thr_id if it's just given + // as an argument. This will cause ACE_Thread_Manager (if it's doing this + // create) to lose track of the new thread since the ID will be passed back + // equal to 0. So give pthread_detach a junker to scribble on. + ACE_thread_t junker; + cma_handle_assign(thr_id, &junker); + ::pthread_detach (&junker); +# else + ::pthread_detach (thr_id); +# endif /* HPUX_10 */ +# endif /* ACE_LACKS_SETDETACH */ + } -# else - ACE_OSCALL (ACE_ADAPT_RETVAL (::pthread_create (thr_id, attr, - thread_args->entry_point (), - thread_args), - result), - int, -1, result); -# endif /* ACE_HAS_DCE_DRAFT4_THREADS */ ::pthread_attr_delete (&attr); -# else /* !ACE_HAS_DCETHREADS */ + +# elif defined (ACE_HAS_PTHREADS_DRAFT6) + ACE_OSCALL (::pthread_create (thr_id, &attr, + thread_args->entry_point (), + thread_args), + int, -1, result); + ::pthread_attr_destroy (&attr); + +# else /* this is draft 7 or std */ ACE_OSCALL (ACE_ADAPT_RETVAL (::pthread_create (thr_id, &attr, thread_args->entry_point (), @@ -2639,9 +2650,9 @@ ACE_OS::thr_create (ACE_THR_FUNC func, result), int, -1, result); ::pthread_attr_destroy (&attr); -# endif /* ACE_HAS_DCETHREADS */ +# endif /* ACE_HAS_PTHREADS_DRAFT4 */ - // This is a Solaris, POSIX, or DCE implementation of pthreads, + // This is a Solaris or POSIX implementation of pthreads, // where we assume that ACE_thread_t and ACE_hthread_t are the same. // If this *isn't* correct on some platform, please let us know. if (result != -1) @@ -2947,7 +2958,7 @@ ACE_OS::thr_exit (void *status) { // ACE_TRACE ("ACE_OS::thr_exit"); #if defined (ACE_HAS_THREADS) -# if defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) +# if defined (ACE_HAS_PTHREADS) ::pthread_exit (status); # elif defined (ACE_HAS_STHREADS) ::thr_exit (status); @@ -3089,7 +3100,7 @@ ACE_OS::thr_setspecific (ACE_OS_thread_key_t key, void *data) { // ACE_TRACE ("ACE_OS::thr_setspecific"); #if defined (ACE_HAS_THREADS) -# if defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) +# if defined (ACE_HAS_PTHREADS) # if defined (ACE_HAS_FSU_PTHREADS) // Call pthread_init() here to initialize threads package. FSU // threads need an initialization before the first thread constructor. @@ -3136,7 +3147,7 @@ ACE_OS::thr_setspecific (ACE_thread_key_t key, void *data) return 0; } -# elif defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) +# elif defined (ACE_HAS_PTHREADS) # if defined (ACE_HAS_FSU_PTHREADS) // Call pthread_init() here to initialize threads package. FSU // threads need an initialization before the first thread constructor. @@ -3147,7 +3158,15 @@ ACE_OS::thr_setspecific (ACE_thread_key_t key, void *data) // affect existing threads. pthread_init (); # endif /* ACE_HAS_FSU_PTHREADS */ - ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::pthread_setspecific (key, data), ace_result_), int, -1); + +# if defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6) + ACE_OSCALL_RETURN (::pthread_setspecific (key, data), int, -1); +# else + ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::pthread_setspecific (key, data), + ace_result_), + int, -1); +# endif /* ACE_HAS_PTHREADS_DRAFT4, 6 */ + # elif defined (ACE_HAS_STHREADS) ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::thr_setspecific (key, data), ace_result_), int, -1); # elif defined (ACE_HAS_WTHREADS) @@ -3169,14 +3188,11 @@ ACE_OS::thr_keyfree (ACE_thread_key_t key) #if defined (ACE_HAS_THREADS) # if defined (ACE_HAS_TSS_EMULATION) return ACE_TSS_Cleanup::instance ()->remove (key); -# elif defined (ACE_LACKS_KEYDELETE) +# elif defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6) ACE_UNUSED_ARG (key); ACE_NOTSUP_RETURN (-1); -# elif defined (ACE_HAS_PTHREADS) && !defined (ACE_HAS_FSU_PTHREADS) +# elif defined (ACE_HAS_PTHREADS) return ::pthread_key_delete (key); -# elif defined (ACE_HAS_DCETHREADS) - ACE_UNUSED_ARG (key); - ACE_NOTSUP_RETURN (-1); # elif defined (ACE_HAS_THR_KEYDELETE) return ::thr_keydelete (key); # elif defined (ACE_HAS_STHREADS) @@ -3206,18 +3222,20 @@ ACE_OS::thr_keycreate (ACE_OS_thread_key_t *key, { // ACE_TRACE ("ACE_OS::thr_keycreate"); #if defined (ACE_HAS_THREADS) -# if defined (ACE_HAS_DCETHREADS) +# if defined (ACE_HAS_PTHREADS) ACE_UNUSED_ARG (inst); + + # if defined (ACE_HAS_STDARG_THR_DEST) - ACE_OSCALL_RETURN (::pthread_keycreate (key, (void (*)(...)) dest), int, -1); + ACE_OSCALL_RETURN (::pthread_keycreate (key, (void (*)(...)) dest), int, -1); +# elif defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6) + ACE_OSCALL_RETURN (::pthread_keycreate (key, dest), int, -1); # else - ACE_OSCALL_RETURN (::pthread_keycreate (key, dest), int, -1); -# endif /* ACE_HAS_STDARG_THR_DEST */ -# elif defined (ACE_HAS_PTHREADS) - ACE_UNUSED_ARG (inst); ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::pthread_key_create (key, dest), - ace_result_), - int, -1); + ace_result_), + int, -1); +# endif /* ACE_HAS_STDARG_THR_DEST */ + # elif defined (ACE_HAS_STHREADS) ACE_UNUSED_ARG (inst); ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::thr_keycreate (key, dest), @@ -3270,18 +3288,19 @@ ACE_OS::thr_keycreate (ACE_thread_key_t *key, errno = EAGAIN; return -1; } -# elif defined (ACE_HAS_DCETHREADS) +# elif defined (ACE_HAS_PTHREADS) ACE_UNUSED_ARG (inst); + # if defined (ACE_HAS_STDARG_THR_DEST) - ACE_OSCALL_RETURN (::pthread_keycreate (key, (void (*)(...)) dest), int, -1); + ACE_OSCALL_RETURN (::pthread_keycreate (key, (void (*)(...)) dest), int, -1); +# elif defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6) + ACE_OSCALL_RETURN (::pthread_keycreate (key, dest), int, -1); # else - ACE_OSCALL_RETURN (::pthread_keycreate (key, dest), int, -1); -# endif /* ACE_HAS_STDARG_THR_DEST */ -# elif defined (ACE_HAS_PTHREADS) - ACE_UNUSED_ARG (inst); ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::pthread_key_create (key, dest), - ace_result_), - int, -1); + ace_result_), + int, -1); +# endif /* ACE_HAS_STDARG_THR_DEST */ + # elif defined (ACE_HAS_STHREADS) ACE_UNUSED_ARG (inst); ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::thr_keycreate (key, dest), @@ -929,8 +929,7 @@ private: # endif /* ACE_TIMER_SKEW */ // This needs to go here *first* to avoid problems with AIX. -// Just to be safe we'll do it with pthreads, too -- jwr -# if defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) +# if defined (ACE_HAS_PTHREADS) extern "C" { # include /**/ <pthread.h> # if defined (DIGITAL_UNIX) @@ -938,23 +937,23 @@ extern "C" { extern "C" pthread_t pthread_self (void); # endif /* DIGITAL_UNIX */ } -# endif /* ACE_HAS_DCETHREADS */ +# endif /* ACE_HAS_PTHREADS */ // There are a lot of threads-related macro definitions in the config files. // They came in at different times and from different places and platform // requirements as threads evolved. They are probably not all needed - some // overlap or are otherwise confused. This is an attempt to start // straightening them out. -# if defined (ACE_HAS_PTHREADS_1003_DOT_1C) /* POSIX.1C threads (pthreads) */ - // POSIX.1C threads implies pthread_sigmask() -# if !defined (ACE_HAS_PTHREAD_SIGMASK) && !defined (__Lynx__) +# if defined (ACE_HAS_PTHREADS_STD) /* POSIX.1c threads (pthreads) */ + // POSIX.1c threads implies pthread_sigmask() +# if !defined (ACE_HAS_PTHREAD_SIGMASK) # define ACE_HAS_PTHREAD_SIGMASK -# endif /* ! ACE_HAS_PTHREAD_SIGMASK && ! __Lynx__ */ +# endif /* ! ACE_HAS_PTHREAD_SIGMASK */ // ... and 2-parameter asctime_r and ctime_r -# ifndef ACE_HAS_2_PARAM_ASCTIME_R_AND_CTIME_R +# if !defined (ACE_HAS_2_PARAM_ASCTIME_R_AND_CTIME_R) && !defined (ACE_HAS_STHREADS) # define ACE_HAS_2_PARAM_ASCTIME_R_AND_CTIME_R # endif -# endif /* ACE_HAS_PTHREADS_1003_DOT_1C */ +# endif /* ACE_HAS_PTHREADS_STD */ # if (ACE_NTRACE == 1) # define ACE_TRACE(X) @@ -1668,20 +1667,20 @@ struct stat { # define ACE_SCOPE_THREAD 2 # endif /* ACE_HAS_STHREADS */ -# if ! (defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS)) +# if !defined (ACE_HAS_PTHREADS) # define ACE_SCHED_OTHER 0 # define ACE_SCHED_FIFO 1 # define ACE_SCHED_RR 2 -# endif /* ! (ACE_HAS_DCETHREADS || ACE_HAS_PTHREADS) */ +# endif /* ! ACE_HAS_PTHREADS */ -# if defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) +# if defined (ACE_HAS_PTHREADS) # define ACE_SCHED_OTHER SCHED_OTHER # define ACE_SCHED_FIFO SCHED_FIFO # define ACE_SCHED_RR SCHED_RR // Definitions for mapping POSIX pthreads onto Solaris threads. -# if defined (ACE_HAS_FSU_PTHREADS) +# if defined (ACE_HAS_PTHREADS_DRAFT6) # define PTHREAD_DETACHED 0x1 # define PTHREAD_SCOPE_SYSTEM 0x2 # define PTHREAD_INHERIT_SCHED 0x4 @@ -1693,11 +1692,7 @@ struct stat { # define PTHREAD_EXPLICIT_SCHED 0 # define PTHREAD_MIN_PRIORITY 0 # define PTHREAD_MAX_PRIORITY 126 -# endif /* ACE_HAS_FSU_PTHREADS */ - -# if defined (ACE_HAS_DCETHREADS) && !defined (ACE_HAS_DCE_DRAFT4_THREADS) -# define PRIORITY_MAX PTHREAD_MAX_PRIORITY -# endif /* ACE_HAS_DCETHREADS */ +# endif /* ACE_HAS_PTHREADS_DRAFT6 */ // Definitions for THREAD- and PROCESS-LEVEL priorities...some // implementations define these while others don't. In order to @@ -1730,6 +1725,13 @@ struct stat { # define ACE_THR_PRI_RR_MAX PRI_RR_MAX # define ACE_THR_PRI_OTHER_MIN PRI_OTHER_MIN # define ACE_THR_PRI_OTHER_MAX PRI_OTHER_MAX +# elif defined (AIX) +# define ACE_THR_PRI_FIFO_MIN PRIORITY_MIN +# define ACE_THR_PRI_FIFO_MAX PRIORITY_MAX +# define ACE_THR_PRI_RR_MIN PRIORITY_MIN +# define ACE_THR_PRI_RR_MAX PRIORITY_MAX +# define ACE_THR_PRI_OTHER_MIN PRIORITY_MIN +# define ACE_THR_PRI_OTHER_MAX PRIORITY_MAX # else # define ACE_THR_PRI_FIFO_MIN ACE_PROC_PRI_FIFO_MIN # define ACE_THR_PRI_FIFO_MAX ACE_PROC_PRI_FIFO_MAX @@ -1824,7 +1826,7 @@ typedef pthread_mutex_t ACE_thread_mutex_t; # endif /* PTHREAD_MUTEXTYPE_FAST */ # endif /* PTHREAD_PROCESS_SHARED */ -# if defined (ACE_HAS_DCETHREADS) +# if defined (ACE_HAS_PTHREADS_DRAFT4) # if defined (PTHREAD_PROCESS_PRIVATE) # define USYNC_THREAD PTHREAD_PROCESS_PRIVATE # else @@ -1839,7 +1841,7 @@ typedef pthread_mutex_t ACE_thread_mutex_t; # elif !defined (ACE_HAS_STHREADS) # define USYNC_THREAD PTHREAD_PROCESS_PRIVATE # define USYNC_PROCESS PTHREAD_PROCESS_SHARED -# endif /* ACE_HAS_DCETHREADS */ +# endif /* ACE_HAS_PTHREADS_DRAFT4 */ # define THR_BOUND 0x00000001 # if defined (CHORUS) @@ -2148,7 +2150,7 @@ public: # define THR_SCHED_FIFO 0 # define THR_SCHED_RR 0 # define THR_SCHED_DEFAULT 0 -# endif /* ACE_HAS_DCETHREADS || ACE_HAS_PTHREADS */ +# endif /* ACE_HAS_PTHREADS / STHREADS / PSOS / VXWORKS / WTHREADS */ # if defined (ACE_LACKS_COND_T) class ACE_Export ACE_cond_t @@ -1620,7 +1620,7 @@ ACE_OS::mutex_init (ACE_mutex_t *m, { // ACE_TRACE ("ACE_OS::mutex_init"); #if defined (ACE_HAS_THREADS) -# if defined (ACE_HAS_DCETHREADS) || defined(ACE_HAS_PTHREADS) +# if defined (ACE_HAS_PTHREADS) ACE_UNUSED_ARG (name); ACE_UNUSED_ARG (arg); ACE_UNUSED_ARG (sa); @@ -1628,16 +1628,20 @@ ACE_OS::mutex_init (ACE_mutex_t *m, pthread_mutexattr_t attributes; int result = -1; -# if defined (ACE_HAS_DCETHREADS) +# if defined (ACE_HAS_PTHREADS_DRAFT4) if (::pthread_mutexattr_create (&attributes) == 0 -# if !defined (ACE_DOES_NOT_HAVE_SETKIND_NP) +# if defined (ACE_HAS_PTHREAD_MUTEXATTR_SETKIND_NP) && ::pthread_mutexattr_setkind_np (&attributes, type) == 0 -# endif /* ACE_HAS_DCETHREADS */ +# endif /* ACE_HAS_PTHREAD_MUTEXATTR_SETKIND_NP */ && ::pthread_mutex_init (m, attributes) == 0) -# elif defined (ACE_HAS_PTHREADS_1003_DOT_1C) || defined (AIX) +# elif defined (ACE_HAS_PTHREADS_DRAFT7) || defined (ACE_HAS_PTHREADS_STD) if (ACE_ADAPT_RETVAL(::pthread_mutexattr_init (&attributes), result) == 0 +# if defined (_POSIX_THREAD_PROCESS_SHARED) + && ACE_ADAPT_RETVAL(::pthread_mutexattr_setpshared(&attributes, type), + result) == 0 +# endif /* _POSIX_THREAD_PROCESS_SHARED */ && ACE_ADAPT_RETVAL(::pthread_mutex_init (m, &attributes), result)== 0) -# else +# else // draft 6 if (::pthread_mutexattr_init (&attributes) == 0 # if !defined (ACE_LACKS_MUTEXATTR_PSHARED) && ::pthread_mutexattr_setpshared (&attributes, type) == 0 @@ -1646,20 +1650,20 @@ ACE_OS::mutex_init (ACE_mutex_t *m, && ::pthread_mutexattr_setkind_np (&attributes, type) == 0 # endif /* ACE_HAS_PTHREAD_MUTEXATTR_SETKIND_NP */ && ::pthread_mutex_init (m, &attributes) == 0) -# endif /* ACE_HAS_DCETHREADS */ +# endif /* ACE_HAS_PTHREADS_DRAFT4 */ result = 0; else result = -1; // ACE_ADAPT_RETVAL used it for intermediate status -# if !defined (ACE_HAS_PTHREAD_MUTEXATTR_SETKIND_NP) +# if (!defined (ACE_HAS_PTHREAD_MUTEXATTR_SETKIND_NP) && !defined (_POSIX_THREAD_PROCESS_SHARED)) ACE_UNUSED_ARG (type); # endif /* ! ACE_HAS_PTHREAD_MUTEXATTR_SETKIND_NP */ -# if defined (ACE_HAS_DCETHREADS) +# if defined (ACE_HAS_PTHREADS_DRAFT4) ::pthread_mutexattr_delete (&attributes); # else ::pthread_mutexattr_destroy (&attributes); -# endif /* ACE_HAS_DCETHREADS */ +# endif /* ACE_HAS_PTHREADS_DRAFT4 */ return result; # elif defined (ACE_HAS_STHREADS) @@ -1692,7 +1696,7 @@ ACE_OS::mutex_init (ACE_mutex_t *m, ACE_UNUSED_ARG (sa); return (*m = ::semMCreate (type)) == 0 ? -1 : 0; -# endif /* ACE_HAS_DCETHREADS || ACE_HAS_PTHREADS */ +# endif /* ACE_HAS_PTHREADS */ #else ACE_UNUSED_ARG (m); ACE_UNUSED_ARG (type); @@ -1708,12 +1712,13 @@ ACE_OS::mutex_destroy (ACE_mutex_t *m) { // ACE_TRACE ("ACE_OS::mutex_destroy"); #if defined (ACE_HAS_THREADS) -# if defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) -# if defined (ACE_HAS_DCE_DRAFT4_THREADS) +# if defined (ACE_HAS_PTHREADS) +# if (defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6)) ACE_OSCALL_RETURN (::pthread_mutex_destroy (m), int, -1); # else - ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::pthread_mutex_destroy (m), ace_result_), int, -1); -# endif /* ACE_HAS_DCE_DRAFT4_THREADS */ + ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::pthread_mutex_destroy (m), + ace_result_), int, -1); +# endif /* ACE_HAS_PTHREADS_DRAFT4 || ACE_HAS_PTHREADS_DRAFT6*/ # elif defined (ACE_HAS_STHREADS) ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::mutex_destroy (m), ace_result_), int, -1); # elif defined (ACE_HAS_WTHREADS) @@ -1744,14 +1749,14 @@ ACE_OS::mutex_lock (ACE_mutex_t *m) { // ACE_TRACE ("ACE_OS::mutex_lock"); #if defined (ACE_HAS_THREADS) -# if defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) +# if defined (ACE_HAS_PTHREADS) // Note, don't use "::" here since the following call is often a macro. -# if defined (ACE_HAS_DCE_DRAFT4_THREADS) +# if (defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6)) ACE_OSCALL_RETURN (pthread_mutex_lock (m), int, -1); # else ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (pthread_mutex_lock (m), ace_result_), int, -1); -# endif /* ACE_HAS_DCE_DRAFT4_THREADS */ +# endif /* ACE_HAS_PTHREADS_DRAFT4 || ACE_HAS_PTHREADS_DRAFT6 */ # elif defined (ACE_HAS_STHREADS) ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::mutex_lock (m), ace_result_), int, -1); # elif defined (ACE_HAS_WTHREADS) @@ -1830,9 +1835,9 @@ ACE_OS::mutex_trylock (ACE_mutex_t *m) { // ACE_TRACE ("ACE_OS::mutex_trylock"); #if defined (ACE_HAS_THREADS) -# if defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) +# if defined (ACE_HAS_PTHREADS) // Note, don't use "::" here since the following call is often a macro. -# if defined (ACE_HAS_DCE_DRAFT4_THREADS) +# if (defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6)) int status = pthread_mutex_trylock (m); if (status == 1) status = 0; @@ -1941,9 +1946,9 @@ ACE_OS::mutex_unlock (ACE_mutex_t *m) { // ACE_TRACE ("ACE_OS::mutex_unlock"); #if defined (ACE_HAS_THREADS) -# if defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) +# if defined (ACE_HAS_PTHREADS) // Note, don't use "::" here since the following call is often a macro. -# if defined (ACE_HAS_DCE_DRAFT4_THREADS) +# if (defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6)) ACE_OSCALL_RETURN (pthread_mutex_unlock (m), int, -1); # else ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (pthread_mutex_unlock (m), ace_result_), @@ -1982,7 +1987,7 @@ ACE_OS::thread_mutex_init (ACE_thread_mutex_t *m, { // ACE_TRACE ("ACE_OS::thread_mutex_init"); #if defined (ACE_HAS_THREADS) -# if defined (ACE_HAS_STHREADS) || defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) +# if defined (ACE_HAS_STHREADS) || defined (ACE_HAS_PTHREADS) ACE_UNUSED_ARG (type); // Force the use of USYNC_THREAD! return ACE_OS::mutex_init (m, USYNC_THREAD, name, arg); @@ -2010,7 +2015,7 @@ ACE_OS::thread_mutex_destroy (ACE_thread_mutex_t *m) { // ACE_TRACE ("ACE_OS::thread_mutex_destroy"); #if defined (ACE_HAS_THREADS) -# if defined (ACE_HAS_STHREADS) || defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) +# if defined (ACE_HAS_STHREADS) || defined (ACE_HAS_PTHREADS) return ACE_OS::mutex_destroy (m); # elif defined (ACE_HAS_WTHREADS) ::DeleteCriticalSection (m); @@ -2029,7 +2034,7 @@ ACE_OS::thread_mutex_lock (ACE_thread_mutex_t *m) { // ACE_TRACE ("ACE_OS::thread_mutex_lock"); #if defined (ACE_HAS_THREADS) -# if defined (ACE_HAS_STHREADS) || defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) +# if defined (ACE_HAS_STHREADS) || defined (ACE_HAS_PTHREADS) return ACE_OS::mutex_lock (m); # elif defined (ACE_HAS_WTHREADS) ::EnterCriticalSection (m); @@ -2048,7 +2053,7 @@ ACE_OS::thread_mutex_trylock (ACE_thread_mutex_t *m) { // ACE_TRACE ("ACE_OS::thread_mutex_trylock"); #if defined (ACE_HAS_THREADS) -# if defined (ACE_HAS_STHREADS) || defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) +# if defined (ACE_HAS_STHREADS) || defined (ACE_HAS_PTHREADS) return ACE_OS::mutex_trylock (m); # elif defined (ACE_HAS_WTHREADS) # if defined (ACE_HAS_WIN32_TRYLOCK) @@ -2078,7 +2083,7 @@ ACE_OS::thread_mutex_unlock (ACE_thread_mutex_t *m) { // ACE_TRACE ("ACE_OS::thread_mutex_unlock"); #if defined (ACE_HAS_THREADS) -# if defined (ACE_HAS_STHREADS) || defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) +# if defined (ACE_HAS_STHREADS) || defined (ACE_HAS_PTHREADS) return ACE_OS::mutex_unlock (m); # elif defined (ACE_HAS_WTHREADS) ::LeaveCriticalSection (m); @@ -2103,12 +2108,12 @@ ACE_OS::cond_destroy (ACE_cond_t *cv) { // ACE_TRACE ("ACE_OS::cond_destroy"); # if defined (ACE_HAS_THREADS) -# if defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) -# if defined (ACE_HAS_DCE_DRAFT4_THREADS) +# if defined (ACE_HAS_PTHREADS) +# if defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6) ACE_OSCALL_RETURN (::pthread_cond_destroy (cv), int, -1); # else ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::pthread_cond_destroy (cv), ace_result_), int, -1); -# endif /* ACE_HAS_DCE_DRAFT4_THREADS */ +# endif /* ACE_HAS_PTHREADS_DRAFT4 || ACE_HAS_PTHREADS_DRAFT6 */ # elif defined (ACE_HAS_STHREADS) ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::cond_destroy (cv), ace_result_), int, -1); # endif /* ACE_HAS_STHREADS */ @@ -2126,17 +2131,21 @@ ACE_OS::cond_init (ACE_cond_t *cv, int type, LPCTSTR name, void *arg) ACE_UNUSED_ARG (name); ACE_UNUSED_ARG (arg); # if defined (ACE_HAS_THREADS) -# if defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) +# if defined (ACE_HAS_PTHREADS) pthread_condattr_t attributes; int result = -1; -# if defined (ACE_HAS_DCETHREADS) +# if defined (ACE_HAS_PTHREADS_DRAFT4) if (::pthread_condattr_create (&attributes) == 0 && ::pthread_cond_init (cv, attributes) == 0 -# elif defined (ACE_HAS_PTHREADS_1003_DOT_1C) || defined (AIX) +# elif defined (ACE_HAS_PTHREADS_STD) || defined (ACE_HAS_PTHREADS_DRAFT7) if (ACE_ADAPT_RETVAL(::pthread_condattr_init (&attributes), result) == 0 +# if defined (_POSIX_THREAD_PROCESS_SHARED) + && ACE_ADAPT_RETVAL(::pthread_condattr_setpshared(&attributes, type), + result) == 0 +# endif /* _POSIX_THREAD_PROCESS_SHARED */ && ACE_ADAPT_RETVAL(::pthread_cond_init (cv, &attributes), result) == 0 -# else +# else /* this is draft 6 */ if (::pthread_condattr_init (&attributes) == 0 # if !defined (ACE_LACKS_CONDATTR_PSHARED) && ::pthread_condattr_setpshared (&attributes, type) == 0 @@ -2150,18 +2159,18 @@ ACE_OS::cond_init (ACE_cond_t *cv, int type, LPCTSTR name, void *arg) result = 0; else result = -1; // ACE_ADAPT_RETVAL used it for intermediate status -# if defined (ACE_HAS_DCETHREADS) +# if defined (ACE_HAS_PTHREADS_DRAFT4) ::pthread_condattr_delete (&attributes); # else ::pthread_condattr_destroy (&attributes); -# endif /* ACE_HAS_DCETHREADS */ +# endif /* ACE_HAS_PTHREADS_DRAFT4 */ return result; # elif defined (ACE_HAS_STHREADS) ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::cond_init (cv, type, arg), ace_result_), int, -1); -# endif /* ACE_HAS_DCETHREADS && ACE_HAS_STHREADS */ +# endif /* ACE_HAS_PTHREADS && ACE_HAS_STHREADS */ # else ACE_UNUSED_ARG (cv); ACE_UNUSED_ARG (type); @@ -2176,13 +2185,13 @@ ACE_OS::cond_signal (ACE_cond_t *cv) { // ACE_TRACE ("ACE_OS::cond_signal"); # if defined (ACE_HAS_THREADS) -# if defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) -# if defined (ACE_HAS_DCE_DRAFT4_THREADS) +# if defined (ACE_HAS_PTHREADS) +# if defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6) ACE_OSCALL_RETURN (::pthread_cond_signal (cv), int, -1); # else ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::pthread_cond_signal (cv),ace_result_), int, -1); -# endif /* ACE_HAS_DCE_DRAFT4_THREADS */ +# endif /* ACE_HAS_PTHREADS_DRAFT4 || ACE_HAS_PTHREADS_DRAFT6 */ # elif defined (ACE_HAS_STHREADS) ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::cond_signal (cv), ace_result_), int, -1); # endif /* ACE_HAS_STHREADS */ @@ -2197,14 +2206,14 @@ ACE_OS::cond_broadcast (ACE_cond_t *cv) { // ACE_TRACE ("ACE_OS::cond_broadcast"); # if defined (ACE_HAS_THREADS) -# if defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) -# if defined (ACE_HAS_DCE_DRAFT4_THREADS) +# if defined (ACE_HAS_PTHREADS) +# if defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6) ACE_OSCALL_RETURN (::pthread_cond_broadcast (cv), int, -1); # else ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::pthread_cond_broadcast (cv), ace_result_), int, -1); -# endif /* ACE_HAS_DCE_DRAFT4_THREADS */ +# endif /* ACE_HAS_PTHREADS_DRAFT4 || ACE_HAS_PTHREADS_DRAFT6 */ # elif defined (ACE_HAS_STHREADS) ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::cond_broadcast (cv), ace_result_), @@ -2222,17 +2231,17 @@ ACE_OS::cond_wait (ACE_cond_t *cv, { // ACE_TRACE ("ACE_OS::cond_wait"); # if defined (ACE_HAS_THREADS) -# if defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) -# if defined (ACE_HAS_DCE_DRAFT4_THREADS) +# if defined (ACE_HAS_PTHREADS) +# if defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6) ACE_OSCALL_RETURN (::pthread_cond_wait (cv, external_mutex), int, -1); # else ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::pthread_cond_wait (cv, external_mutex), ace_result_), int, -1); -# endif /* ACE_HAS_DCE_DRAFT4_THREADS */ +# endif /* ACE_HAS_PTHREADS_DRAFT4 || ACE_HAS_PTHREADS_DRAFT6 */ # elif defined (ACE_HAS_STHREADS) ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::cond_wait (cv, external_mutex), ace_result_), int, -1); -# endif /* ACE_HAS_DCETHREADS || ACE_HAS_PTHREADS */ +# endif /* ACE_HAS_PTHREADS */ # else ACE_UNUSED_ARG (cv); ACE_UNUSED_ARG (external_mutex); @@ -2253,29 +2262,33 @@ ACE_OS::cond_timedwait (ACE_cond_t *cv, if (timeout != 0) ts = *timeout; // Calls ACE_Time_Value::operator timespec_t(). -# if defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) -# if defined (__Lynx__) +# if defined (ACE_HAS_PTHREADS) + +# if defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6) if (timeout == 0) ACE_OSCALL (::pthread_cond_wait (cv, external_mutex), int, -1, result); else { + +# if defined (__Lynx__) // Note that we must convert between absolute time (which is // passed as a parameter) and relative time (which is what the - // LynxOS Draft 4 POSIX 1003.4a pthread_cond_timedwait expects). + // LynxOS pthread_cond_timedwait expects). This differs from 1003.4a + // draft 4. timespec_t relative_time = *timeout - ACE_OS::gettimeofday (); ACE_OSCALL (::pthread_cond_timedwait (cv, external_mutex, &relative_time), int, -1, result); +# else + ACE_OSCALL (::pthread_cond_timedwait (cv, external_mutex, + (ACE_TIMESPEC_PTR) &ts), + int, -1, result); +# endif /* __Lynx__ */ } -# elif defined (ACE_HAS_DCE_DRAFT4_THREADS) - ACE_OSCALL ((timeout == 0 - ? ::pthread_cond_wait (cv, external_mutex) - : ::pthread_cond_timedwait (cv, external_mutex, - (ACE_TIMESPEC_PTR) &ts)), - int, -1, result); + # else ACE_OSCALL (ACE_ADAPT_RETVAL (timeout == 0 ? ::pthread_cond_wait (cv, external_mutex) @@ -2283,7 +2296,7 @@ ACE_OS::cond_timedwait (ACE_cond_t *cv, (ACE_TIMESPEC_PTR) &ts), result), int, -1, result); -# endif /* ACE_HAS_DCE_DRAFT4_THREADS */ +# endif /* ACE_HAS_PTHREADS_DRAFT4 || ACE_HAS_PTHREADS_DRAFT6*/ // We need to adjust this to make the POSIX and Solaris return // values consistent. EAGAIN is from DCE DRAFT4 (HP-UX 10.20 and // down). @@ -2336,7 +2349,7 @@ ACE_OS::sema_destroy (ACE_sema_t *s) #elif defined (ACE_HAS_THREADS) # if defined (ACE_HAS_STHREADS) ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::sema_destroy (s), ace_result_), int, -1); -# elif defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) +# elif defined (ACE_HAS_PTHREADS) int r1 = ACE_OS::mutex_destroy (&s->lock_); int r2 = ACE_OS::cond_destroy (&s->count_nonzero_); return r1 != 0 || r2 != 0 ? -1 : 0; @@ -2407,7 +2420,7 @@ ACE_OS::sema_init (ACE_sema_t *s, ACE_UNUSED_ARG (sa); ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::sema_init (s, count, type, arg), ace_result_), int, -1); -# elif defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) +# elif defined (ACE_HAS_PTHREADS) ACE_UNUSED_ARG (max); ACE_UNUSED_ARG (sa); int result = -1; @@ -2518,7 +2531,7 @@ ACE_OS::sema_post (ACE_sema_t *s) #elif defined (ACE_HAS_THREADS) # if defined (ACE_HAS_STHREADS) ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::sema_post (s), ace_result_), int, -1); -# elif defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) +# elif defined (ACE_HAS_PTHREADS) int result = -1; if (ACE_OS::mutex_lock (&s->lock_) == 0) @@ -2608,7 +2621,7 @@ ACE_OS::sema_trywait (ACE_sema_t *s) ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::sema_trywait (s), ace_result_), int, -1); -# elif defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) +# elif defined (ACE_HAS_PTHREADS) int result = -1; @@ -2705,7 +2718,7 @@ ACE_OS::sema_wait (ACE_sema_t *s) #elif defined (ACE_HAS_THREADS) # if defined (ACE_HAS_STHREADS) ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::sema_wait (s), ace_result_), int, -1); -# elif defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) +# elif defined (ACE_HAS_PTHREADS) int result = 0; ACE_PTHREAD_CLEANUP_PUSH (&s->lock_); @@ -2818,7 +2831,7 @@ ACE_OS::sema_wait (ACE_sema_t *s, ACE_Time_Value &tv) ACE_UNUSED_ARG (s); ACE_UNUSED_ARG (tv); ACE_NOTSUP_RETURN (-1); -# elif defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) +# elif defined (ACE_HAS_PTHREADS) int result = 0; int error = 0; @@ -3607,9 +3620,9 @@ ACE_OS::rw_rdlock (ACE_rwlock_t *rw) # if !defined (ACE_LACKS_RWLOCK_T) ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::rw_rdlock (rw), ace_result_), int, -1); # else /* NT, POSIX, and VxWorks don't support this natively. */ -# if defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) +# if defined (ACE_HAS_PTHREADS) ACE_PTHREAD_CLEANUP_PUSH (&rw->lock_); -# endif /* ACE_HAS_DCETHREADS */ +# endif /* ACE_HAS_PTHREADS */ int result = 0; if (ACE_OS::mutex_lock (&rw->lock_) == -1) result = -1; // -1 means didn't get the mutex. @@ -3631,7 +3644,7 @@ ACE_OS::rw_rdlock (ACE_rwlock_t *rw) rw->ref_count_++; if (result != -1) ACE_OS::mutex_unlock (&rw->lock_); -# if defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) +# if defined (ACE_HAS_PTHREADS) ACE_PTHREAD_CLEANUP_POP (0); # endif /* defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) */ return 0; @@ -3650,9 +3663,9 @@ ACE_OS::rw_wrlock (ACE_rwlock_t *rw) # if !defined (ACE_LACKS_RWLOCK_T) ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::rw_wrlock (rw), ace_result_), int, -1); # else /* NT, POSIX, and VxWorks don't support this natively. */ -# if defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) +# if defined (ACE_HAS_PTHREADS) ACE_PTHREAD_CLEANUP_PUSH (&rw->lock_); -# endif /* defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) */ +# endif /* defined (ACE_HAS_PTHREADS) */ int result = 0; if (ACE_OS::mutex_lock (&rw->lock_) == -1) @@ -3676,9 +3689,9 @@ ACE_OS::rw_wrlock (ACE_rwlock_t *rw) rw->ref_count_ = -1; if (result != -1) ACE_OS::mutex_unlock (&rw->lock_); -# if defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) +# if defined (ACE_HAS_PTHREADS) ACE_PTHREAD_CLEANUP_POP (0); -# endif /* defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) */ +# endif /* defined (ACE_HAS_PTHREADS) */ return 0; # endif /* ACE_HAS_STHREADS */ #else @@ -3758,9 +3771,9 @@ ACE_OS::rw_trywrlock_upgrade (ACE_rwlock_t *rw) int result = 0; -# if defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) +# if defined (ACE_HAS_PTHREADS) ACE_PTHREAD_CLEANUP_PUSH (&rw->lock_); -# endif /* defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) */ +# endif /* defined (ACE_HAS_PTHREADS) */ if (ACE_OS::mutex_lock (&rw->lock_) == -1) return -1; @@ -3798,9 +3811,9 @@ ACE_OS::rw_trywrlock_upgrade (ACE_rwlock_t *rw) ACE_OS::mutex_unlock (&rw->lock_); -# if defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) +# if defined (ACE_HAS_PTHREADS) ACE_PTHREAD_CLEANUP_POP (0); -# endif /* defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) */ +# endif /* defined (ACE_HAS_PTHREADS) */ return result; @@ -4717,12 +4730,18 @@ ACE_OS::getpwnam_r (const char *name, struct passwd *pwent, #if !defined (ACE_LACKS_PWD_FUNCTIONS) # if defined (ACE_HAS_REENTRANT_FUNCTIONS) # if !defined (ACE_LACKS_PWD_REENTRANT_FUNCTIONS) -# if defined (ACE_HAS_PTHREADS_1003_DOT_1C) +# if defined (ACE_HAS_PTHREADS_STD) && !defined (ACE_HAS_STHREADS) struct passwd *result; + int status; # if defined (DIGITAL_UNIX) ::_Pgetpwnam_r (name, pwent, buffer, buflen, &result); # else - ::getpwnam_r (name, pwent, buffer, buflen, &result); + status = ::getpwnam_r (name, pwent, buffer, buflen, &result); + if (status != 0) + { + errno = status; + result = 0; + } # endif /* (DIGITAL_UNIX) */ return result; # elif defined (AIX) || defined (HPUX_10) @@ -4732,7 +4751,7 @@ ACE_OS::getpwnam_r (const char *name, struct passwd *pwent, return pwent; # else return ::getpwnam_r (name, pwent, buffer, buflen); -# endif /* ACE_HAS_PTHREADS_1003_DOT_1C */ +# endif /* ACE_HAS_PTHREADS_STD */ # else ACE_UNUSED_ARG (name); ACE_UNUSED_ARG (pwent); @@ -5046,7 +5065,7 @@ ACE_OS::thr_continue (ACE_hthread_t target_thread) #if defined (ACE_HAS_THREADS) # if defined (ACE_HAS_STHREADS) ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::thr_continue (target_thread), ace_result_), int, -1); -# elif defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) +# elif defined (ACE_HAS_PTHREADS) ACE_UNUSED_ARG (target_thread); ACE_NOTSUP_RETURN (-1); # elif defined (ACE_HAS_WTHREADS) @@ -5067,7 +5086,7 @@ ACE_OS::thr_continue (ACE_hthread_t target_thread) ACE_INLINE int ACE_OS::thr_equal (ACE_thread_t t1, ACE_thread_t t2) { -#if defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) +#if defined (ACE_HAS_PTHREADS) # if defined (pthread_equal) // If it's a macro we can't say "::pthread_equal"... return pthread_equal (t1, t2); @@ -5085,7 +5104,7 @@ ACE_OS::thr_equal (ACE_thread_t t1, ACE_thread_t t2) ACE_INLINE int ACE_OS::thr_cmp (ACE_hthread_t t1, ACE_hthread_t t2) { -#if defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) +#if defined (ACE_HAS_PTHREADS) # if defined (ACE_HAS_TID_T) && !defined (ACE_HAS_PTHREAD_EQUAL) return t1 == t2; // I hope these aren't structs! # elif defined (pthread_equal) @@ -5107,7 +5126,7 @@ ACE_OS::thr_getconcurrency (void) #if defined (ACE_HAS_THREADS) # if defined (ACE_HAS_STHREADS) return ::thr_getconcurrency (); -# elif defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) || defined (VXWORKS) +# elif defined (ACE_HAS_PTHREADS) || defined (VXWORKS) ACE_NOTSUP_RETURN (-1); # elif defined (ACE_HAS_WTHREADS) ACE_NOTSUP_RETURN (-1); @@ -5124,9 +5143,9 @@ ACE_OS::thr_getprio (ACE_hthread_t thr_id, int &prio) #if defined (ACE_HAS_THREADS) # if defined (ACE_HAS_STHREADS) ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::thr_getprio (thr_id, &prio), ace_result_), int, -1); -# elif defined (ACE_HAS_DCETHREADS) || (defined (ACE_HAS_PTHREADS) && !defined (ACE_LACKS_SETSCHED)) +# elif (defined (ACE_HAS_PTHREADS) && !defined (ACE_LACKS_SETSCHED)) -# if defined (ACE_HAS_DCE_DRAFT4_THREADS) +# if defined (ACE_HAS_PTHREADS_DRAFT4) int result; result = ::pthread_getprio (thr_id); if (result != -1) @@ -5136,6 +5155,15 @@ ACE_OS::thr_getprio (ACE_hthread_t thr_id, int &prio) } else return -1; +# elif defined (ACE_HAS_PTHREADS_DRAFT6) + + pthread_attr_t attr; + if (pthread_getschedattr (thr_id, &attr) == 0) + { + prio = pthread_attr_getprio(&attr); + return 0; + } + return -1; # else struct sched_param param; @@ -5147,7 +5175,7 @@ ACE_OS::thr_getprio (ACE_hthread_t thr_id, int &prio) -1, result); prio = param.sched_priority; return result; -# endif /* ACE_HAS_DCE_DRAFT4_THREADS */ +# endif /* ACE_HAS_PTHREADS_DRAFT4 */ # elif defined (ACE_HAS_WTHREADS) prio = ::GetThreadPriority (thr_id); if (prio == THREAD_PRIORITY_ERROR_RETURN) @@ -5174,14 +5202,11 @@ ACE_OS::thr_self (ACE_hthread_t &self) { // ACE_TRACE ("ACE_OS::thr_self"); #if defined (ACE_HAS_THREADS) -# if defined (ACE_HAS_DCETHREADS) +# if defined (ACE_HAS_PTHREADS) // Note, don't use "::" here since the following call is often a macro. self = pthread_self (); # elif defined (ACE_HAS_THREAD_SELF) self = ::thread_self (); -# elif defined (ACE_HAS_PTHREADS) - // Note, don't use "::" here since the following call is often a macro. - self = pthread_self (); # elif defined (ACE_HAS_STHREADS) self = ::thr_self (); # elif defined (ACE_HAS_WTHREADS) @@ -5199,7 +5224,7 @@ ACE_OS::thr_self (void) { // ACE_TRACE ("ACE_OS::thr_self"); #if defined (ACE_HAS_THREADS) -# if defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) +# if defined (ACE_HAS_PTHREADS) // Note, don't use "::" here since the following call is often a macro. ACE_OSCALL_RETURN (pthread_self (), int, -1); # elif defined (ACE_HAS_STHREADS) @@ -5225,16 +5250,13 @@ ACE_OS::thr_getspecific (ACE_OS_thread_key_t key, void **data) #if defined (ACE_HAS_THREADS) # if defined (ACE_HAS_STHREADS) ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::thr_getspecific (key, data), ace_result_), int, -1); -# elif defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) -# if !defined (ACE_HAS_FSU_PTHREADS) && !defined (ACE_HAS_PTHREAD_GETSPECIFIC_DATAPTR) - // Note, don't use "::" here since the following call is often a macro. - *data = pthread_getspecific (key); -# elif !defined (ACE_HAS_FSU_PTHREADS) && defined (ACE_HAS_SETKIND_NP) || defined (ACE_HAS_PTHREAD_GETSPECIFIC_DATAPTR) - ::pthread_getspecific (key, data); -# else /* ACE_HAS_FSU_PTHREADS */ - ::pthread_getspecific (key, data); -# endif /* ACE_HAS_FSU_PTHREADS */ - return 0; +# elif defined (ACE_HAS_PTHREADS) +# if defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6) + return pthread_getspecific(key, data); +# else /* this is ACE_HAS_PTHREADS_DRAFT7 or STD */ + *data = ::pthread_getspecific (key); +# endif /* ACE_HAS_PTHREADS_DRAFT4, 6 */ + return 0; # elif defined (ACE_HAS_WTHREADS) // The following handling of errno is designed like this due to @@ -5363,15 +5385,12 @@ ACE_OS::thr_getspecific (ACE_thread_key_t key, void **data) } # elif defined (ACE_HAS_STHREADS) ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::thr_getspecific (key, data), ace_result_), int, -1); -# elif defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) -# if !defined (ACE_HAS_FSU_PTHREADS) && !defined (ACE_HAS_PTHREAD_GETSPECIFIC_DATAPTR) - // Note, don't use "::" here since the following call is often a macro. - *data = pthread_getspecific (key); -# elif !defined (ACE_HAS_FSU_PTHREADS) && defined (ACE_HAS_SETKIND_NP) || defined (ACE_HAS_PTHREAD_GETSPECIFIC_DATAPTR) - ::pthread_getspecific (key, data); -# else /* ACE_HAS_FSU_PTHREADS */ - ::pthread_getspecific (key, data); -# endif /* ACE_HAS_FSU_PTHREADS */ +# elif defined (ACE_HAS_PTHREADS) +# if defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6) + return ::pthread_getspecific (key, data); +# else /* this is Draft 7 or STD */ + *data = ::pthread_getspecific (key); +# endif /* ACE_HAS_PTHREADS_DRAFT4, 6 */ return 0; # elif defined (ACE_HAS_WTHREADS) @@ -5410,6 +5429,7 @@ ACE_OS::thr_getspecific (ACE_thread_key_t key, void **data) #endif /* ACE_HAS_THREADS */ } + ACE_INLINE int ACE_OS::thr_join (ACE_thread_t waiter_id, ACE_thread_t *thr_id, @@ -5420,14 +5440,14 @@ ACE_OS::thr_join (ACE_thread_t waiter_id, # if defined (ACE_HAS_STHREADS) ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::thr_join (waiter_id, thr_id, status), ace_result_), int, -1); -# elif defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) +# elif defined (ACE_HAS_PTHREADS) ACE_UNUSED_ARG (thr_id); -# if defined (ACE_HAS_DCE_DRAFT4_THREADS) +# if defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6) ACE_OSCALL_RETURN (::pthread_join (waiter_id, status), int, -1); # else ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::pthread_join (waiter_id, status), ace_result_), int, -1); -# endif /* ACE_HAS_DCE_DRAFT4_THREADS */ +# endif /* ACE_HAS_PTHREADS_DRAFT4, 6 */ # elif defined (ACE_HAS_WTHREADS) ACE_UNUSED_ARG (waiter_id); ACE_UNUSED_ARG (thr_id); @@ -5461,13 +5481,13 @@ ACE_OS::thr_join (ACE_hthread_t thr_handle, # if defined (ACE_HAS_STHREADS) ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::thr_join (thr_handle, 0, status), ace_result_), int, -1); -# elif (defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS)) && !defined (ACE_HAS_THREAD_SELF) -# if defined (ACE_HAS_DCE_DRAFT4_THREADS) +# elif defined (ACE_HAS_PTHREADS) +# if defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6) ACE_OSCALL_RETURN (::pthread_join (thr_handle, status), int, -1); # else ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::pthread_join (thr_handle, status), ace_result_), int, -1); -# endif /* ACE_HAS_DCE_DRAFT4_THREADS */ +# endif /* ACE_HAS_PTHREADS_DRAFT4, 6 */ # elif defined (ACE_HAS_WTHREADS) void *local_status = 0; @@ -5507,22 +5527,23 @@ ACE_OS::thr_setcancelstate (int new_state, int *old_state) { // ACE_TRACE ("ACE_OS::thr_setcancelstate"); #if defined (ACE_HAS_THREADS) -# if defined (ACE_HAS_DCETHREADS) || (defined (ACE_HAS_PTHREADS) && defined (ACE_HAS_STHREADS)) -# if defined (ACE_HAS_DCETHREADS) - ACE_UNUSED_ARG (old_state); - ACE_OSCALL_RETURN (::pthread_setcancel (new_state), int, -1); -# else /* ACE_HAS_DCETHREADS */ - ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::pthread_setcancelstate (new_state, old_state), +# if defined (ACE_HAS_PTHREADS) +# if defined (ACE_HAS_PTHREADS_DRAFT4) + int old; + old = pthread_setcancel (new_state); + if (old == -1) + return -1; + *old_state = old; + return 0; +# elif defined (ACE_HAS_PTHREADS_DRAFT6) + ACE_UNUSED_ARG(old_state); + ACE_OSCALL_RETURN (pthread_setintr (new_state), int, -1); +# else /* this is draft 7 or std */ + ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::pthread_setcancelstate (new_state, + old_state), ace_result_), int, -1); -# endif /* ACE_HAS_DCETHREADS */ -# elif defined (ACE_HAS_PTHREADS) - // I didn't manage to find pthread_cancel anywhere in the MIT pthread - // implementation. So I'll just leave this instead, and see what - // breaks. -- jwr - ACE_UNUSED_ARG (new_state); - ACE_UNUSED_ARG (old_state); - ACE_NOTSUP_RETURN (-1); +# endif /* ACE_HAS_PTHREADS_DRAFT4 */ # elif defined (ACE_HAS_STHREADS) ACE_UNUSED_ARG (new_state); ACE_UNUSED_ARG (old_state); @@ -5548,22 +5569,23 @@ ACE_OS::thr_setcanceltype (int new_type, int *old_type) { // ACE_TRACE ("ACE_OS::thr_setcanceltype"); #if defined (ACE_HAS_THREADS) -# if defined (ACE_HAS_DCETHREADS) || (defined (ACE_HAS_PTHREADS) && defined (ACE_HAS_STHREADS)) -# if defined (ACE_HAS_DCETHREADS) - ACE_UNUSED_ARG (old_type); - ACE_OSCALL_RETURN (::pthread_setcancel (new_type), int, -1); -# else /* ACE_HAS_DCETHREADS */ - ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::pthread_setcanceltype (new_type, old_type), +# if defined (ACE_HAS_PTHREADS) +# if defined (ACE_HAS_PTHREADS_DRAFT4) + int old; + old = pthread_setasynccancel(new_type); + if (old == -1) + return -1; + *old_type = old; + return 0; +# elif defined (ACE_HAS_PTHREADS_DRAFT6) + ACE_UNUSED_ARG(old_type); + ACE_OSCALL_RETURN (pthread_setintrtype (new_type), int, -1); +# else /* this is draft 7 or std */ + ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::pthread_setcanceltype (new_type, + old_type), ace_result_), int, -1); -# endif /* ACE_HAS_DCETHREADS */ -# elif defined (ACE_HAS_PTHREADS) - // I didn't manage to find pthread_cancel anywhere int the MIT pthread - // implementation. So I'll just leave this instead, and see what - // breaks. -- jwr - ACE_UNUSED_ARG (new_type); - ACE_UNUSED_ARG (old_type); - ACE_NOTSUP_RETURN (-1); +# endif /* ACE_HAS_PTHREADS_DRAFT4 */ # elif defined (ACE_HAS_STHREADS) ACE_UNUSED_ARG (new_type); ACE_UNUSED_ARG (old_type); @@ -5589,20 +5611,14 @@ ACE_OS::thr_cancel (ACE_thread_t thr_id) { // ACE_TRACE ("ACE_OS::thr_cancel"); #if defined (ACE_HAS_THREADS) -# if defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) && !defined (ACE_LACKS_PTHREAD_CANCEL) -# if defined (ACE_HAS_DCE_DRAFT4_THREADS) +# if defined (ACE_HAS_PTHREADS) && !defined (ACE_LACKS_PTHREAD_CANCEL) +# if defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6) ACE_OSCALL_RETURN (::pthread_cancel (thr_id), int, -1); # else ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::pthread_cancel (thr_id), ace_result_), int, -1); # endif /* ACE_HAS_DCE_DRAFT4_THREADS */ -# elif defined (ACE_HAS_PTHREADS) - // I didn't manage to find pthread_cancel anywhere int the MIT - // pthread implementation. So I'll just leave this instead, and - // see what breaks. -- jwr - ACE_UNUSED_ARG (thr_id); - ACE_NOTSUP_RETURN (-1); # elif defined (ACE_HAS_STHREADS) ACE_UNUSED_ARG (thr_id); ACE_NOTSUP_RETURN (-1); @@ -5630,31 +5646,33 @@ ACE_OS::sigwait (sigset_t *set, int *sig) # if defined (__FreeBSD__) || defined (CHORUS) ACE_UNUSED_ARG (set); ACE_NOTSUP_RETURN (-1); -# elif (defined (ACE_HAS_STHREADS) && (_POSIX_C_SOURCE - 0 < 199506L)) || defined (ACE_HAS_FSU_PTHREADS) +# elif (defined (ACE_HAS_STHREADS) && !defined (_POSIX_PTHREAD_SEMANTICS)) *sig = ::sigwait (set); return *sig; -# elif defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) -# if defined (ACE_HAS_ONEARG_SIGWAIT) - *sig = sigwait (set); - return *sig; -# else /* ACE_HAS_ONEARG_SETWAIT */ -# if defined (__Lynx__) +# elif defined (ACE_HAS_PTHREADS) + // LynxOS and Digital UNIX have their own hoops to jump through. +# if defined (__Lynx__) // Second arg is a void **, which we don't need (the selected // signal number is returned). *sig = ::sigwait (set, 0); return *sig; -# elif defined (DIGITAL_UNIX) && defined (__DECCXX_VER) +# elif defined (DIGITAL_UNIX) && defined (__DECCXX_VER) // DEC cxx (but not g++) needs this direct call to its internal // sigwait (). This allows us to #undef sigwait, so that we can // have ACE_OS::sigwait. cxx gets confused by ACE_OS::sigwait if // sigwait is _not_ #undef'ed. errno = ::_Psigwait (set, sig); return errno == 0 ? *sig : -1; -# else /* ! __Lynx __ && ! (DIGITAL_UNIX && __DECCXX_VER) */ - errno = ::sigwait (set, sig); - return errno == 0 ? *sig : -1; -# endif /* ! __Lynx__ */ -# endif /* ACE_HAS_ONEARG_SIGWAIT */ +# else /* ! __Lynx __ && ! (DIGITAL_UNIX && __DECCXX_VER) */ + +# if defined (ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6) + *sig = ::sigwait (set); + return *sig; +# else /* this is draft 7 or std */ + errno = ::sigwait (set, sig); + return errno == 0 ? *sig : -1; +# endif /* ACE_HAS_PTHREADS_DRAFT4, 6 */ +# endif /* ! __Lynx__ && ! (DIGITAL_UNIX && __DECCXX_VER) */ # elif defined (ACE_HAS_WTHREADS) ACE_UNUSED_ARG (set); ACE_NOTSUP_RETURN (-1); @@ -5677,12 +5695,8 @@ ACE_OS::thr_testcancel (void) { // ACE_TRACE ("ACE_OS::thr_testcancel"); #if defined (ACE_HAS_THREADS) -# if defined (ACE_HAS_DCETHREADS) || (defined (ACE_HAS_PTHREADS) && defined (ACE_HAS_STHREADS)) +# if defined (ACE_HAS_PTHREADS) ::pthread_testcancel (); -# elif defined (ACE_HAS_PTHREADS) - // I didn't manage to find pthread_cancel anywhere int the MIT - // pthread implementation. So I'll just leave this instead, and - // see what breaks. -- jwr # elif defined (ACE_HAS_STHREADS) # elif defined (ACE_HAS_WTHREADS) # elif defined (VXWORKS) @@ -5713,13 +5727,26 @@ ACE_OS::thr_sigsetmask (int how, ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::thr_sigsetmask (how, nsm, osm), ace_result_), int, -1); -# elif defined (ACE_HAS_PTHREAD_SIGMASK) +# elif defined (ACE_HAS_PTHREADS) +# if defined (AIX) + ACE_OSCALL_RETURN (sigthreadmask (how, nsm, osm), int, -1); + // Draft 4 and 6 implementations will sometimes have a sigprocmask() that + // modifies the calling thread's mask only. If this is not so for your + // platform, define ACE_LACKS_PTHREAD_THR_SIGSETMASK. +# elif defined(ACE_HAS_PTHREADS_DRAFT4) || defined (ACE_HAS_PTHREADS_DRAFT6) + ACE_OSCALL_RETURN (sigprocmask (how, nsm, osm), int, -1); +# else ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::pthread_sigmask (how, nsm, osm), ace_result_), int, -1); -# elif defined (ACE_HAS_PTHREADS) && !defined (ACE_HAS_FSU_PTHREADS) +# endif /* AIX */ + +#if 0 + /* Don't know if anyt platform actually needs this... */ // as far as I can tell, this is now pthread_sigaction() -- jwr ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::pthread_sigaction (how, nsm, osm), ace_result_), int, -1); +#endif /* 0 */ + # elif defined (ACE_HAS_WTHREADS) ACE_UNUSED_ARG (osm); ACE_UNUSED_ARG (nsm); @@ -5766,13 +5793,16 @@ ACE_OS::thr_kill (ACE_thread_t thr_id, int signum) { // ACE_TRACE ("ACE_OS::thr_kill"); #if defined (ACE_HAS_THREADS) -# if defined (ACE_HAS_DCETHREADS) +# if defined (ACE_HAS_PTHREADS) +# if defined (ACE_HAS_PTHREADS_DRAFT4) ACE_UNUSED_ARG (signum); - ACE_OSCALL_RETURN (pthread_cancel (thr_id), int, -1); -# elif defined (ACE_HAS_PTHREADS) + ACE_UNUSED_ARG (thr_id); + ACE_NOTSUP_RETURN (-1); +# else ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::pthread_kill (thr_id, signum), ace_result_), int, -1); +# endif /* ACE_HAS_PTHREADS_DRAFT4 */ # elif defined (ACE_HAS_STHREADS) ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::thr_kill (thr_id, signum), ace_result_), @@ -5821,15 +5851,13 @@ ACE_OS::thr_min_stack (void) int, -1); # endif /* !ACE_HAS_THR_MINSTACK */ # elif defined (ACE_HAS_PTHREADS) -# if defined (ACE_HAS_IRIX62_THREADS) +# if defined (_SC_THREAD_STACK_MIN) return (size_t) ACE_OS::sysconf (_SC_THREAD_STACK_MIN); # elif defined (PTHREAD_STACK_MIN) return PTHREAD_STACK_MIN; # else ACE_NOTSUP_RETURN (0); -# endif /* ACE_HAS_IRIX62_THREADS */ -# elif defined (ACE_HAS_DCETHREADS) - ACE_NOTSUP_RETURN (0); +# endif /* _SC_THREAD_STACK_MIN */ # elif defined (ACE_HAS_WTHREADS) ACE_NOTSUP_RETURN (0); # elif defined (VXWORKS) @@ -5860,7 +5888,7 @@ ACE_OS::thr_setconcurrency (int hint) ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::thr_setconcurrency (hint), ace_result_), int, -1); -# elif defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) +# elif defined (ACE_HAS_PTHREADS) ACE_UNUSED_ARG (hint); ACE_NOTSUP_RETURN (-1); # elif defined (ACE_HAS_WTHREADS) @@ -5886,12 +5914,19 @@ ACE_OS::thr_setprio (ACE_hthread_t thr_id, int prio) ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::thr_setprio (thr_id, prio), ace_result_), int, -1); -# elif defined (ACE_HAS_DCETHREADS) || (defined (ACE_HAS_PTHREADS) && !defined (ACE_LACKS_SETSCHED)) +# elif (defined (ACE_HAS_PTHREADS) && !defined (ACE_LACKS_SETSCHED)) -# if defined (ACE_HAS_DCE_DRAFT4_THREADS) +# if defined (ACE_HAS_PTHREADS_DRAFT4) int result; result = ::pthread_setprio(thr_id, prio); return (result == -1 ? -1 : 0); +# elif defined (ACE_HAS_PTHREADS_DRAFT6) + pthread_attr_t attr; + if (pthread_getschedattr(thr_id, &attr) == -1) + return -1; + if (pthread_attr_setprio (attr, prio) == -1) + return -1; + return pthread_setschedattr(thr_id, attr); # else struct sched_param param; int policy = 0; @@ -5935,7 +5970,7 @@ ACE_OS::thr_suspend (ACE_hthread_t target_thread) #if defined (ACE_HAS_THREADS) # if defined (ACE_HAS_STHREADS) ACE_OSCALL_RETURN (ACE_ADAPT_RETVAL (::thr_suspend (target_thread), ace_result_), int, -1); -# elif defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) +# elif defined (ACE_HAS_PTHREADS) ACE_UNUSED_ARG (target_thread); ACE_NOTSUP_RETURN (-1); # elif defined (ACE_HAS_WTHREADS) @@ -5960,15 +5995,13 @@ ACE_OS::thr_yield (void) #if defined (ACE_HAS_THREADS) # if defined (ACE_HAS_STHREADS) ::thr_yield (); -# elif defined (ACE_HAS_DCETHREADS) || defined (ACE_HAS_PTHREADS) -# if defined (ACE_HAS_IRIX62_THREADS) || defined (ACE_HAS_PTHREADS_1003_DOT_1C) - // Note - this is a POSIX.4 function - not a POSIX.1C function... +# elif defined (ACE_HAS_PTHREADS) +# if defined (ACE_HAS_PTHREADS_STD) + // Note - this is a POSIX.4 function - not a POSIX.1c function... ::sched_yield (); -# elif defined (ACE_HAS_FSU_PTHREADS) || defined (ACE_HAS_YIELD_VOID_PTR) +# elif defined (ACE_HAS_PTHREADS_DRAFT6) ::pthread_yield (NULL); -# elif defined (ACE_LACKS_PTHREAD_YIELD) || defined (ACE_HAS_THR_YIELD) - ::thr_yield (); -# else +# else /* Draft 4 and 7 */ ::pthread_yield (); # endif /* ACE_HAS_IRIX62_THREADS */ # elif defined (ACE_HAS_WTHREADS) @@ -8702,6 +8735,16 @@ ACE_OS::sleep (u_int seconds) #if defined (ACE_WIN32) ::Sleep (seconds * ACE_ONE_SECOND_IN_MSECS); return 0; +#if 0 +#elif defined (HPUX_10) && defined (ACE_HAS_PTHREADS_DRAFT4) + // On HP-UX 10, _CMA_NOWRAPPERS_ disables the mapping from sleep to cma_sleep + // which makes sleep() put the whole process to sleep, and keeps it from + // noticing pending cancels. So, in this case, use pthread_delay_np + struct timespec rqtp; + rqtp.tv_sec = seconds; + rqtp.tv_nsec = 0L; + return pthread_delay_np (&rqtp); +#endif /* 0 */ #elif defined (ACE_HAS_CLOCK_GETTIME) struct timespec rqtp; // Initializer doesn't work with Green Hills 1.8.7 diff --git a/ace/Sched_Params.cpp b/ace/Sched_Params.cpp index 7b02020752c..0567c58a938 100644 --- a/ace/Sched_Params.cpp +++ b/ace/Sched_Params.cpp @@ -68,7 +68,7 @@ ACE_Sched_Params::priority_min (const Policy policy, } else return 0; -#elif defined (ACE_HAS_DCETHREADS) || defined(ACE_HAS_PTHREADS) && !defined(ACE_LACKS_SETSCHED) +#elif defined (ACE_HAS_PTHREADS) && !defined(ACE_LACKS_SETSCHED) switch (scope) { @@ -148,7 +148,7 @@ ACE_Sched_Params::priority_max (const Policy policy, return policy == ACE_SCHED_OTHER ? ((tsinfo_t *) pcinfo.pc_clinfo)->ts_maxupri : ((rtinfo_t *) pcinfo.pc_clinfo)->rt_maxpri; -#elif defined (ACE_HAS_DCETHREADS) || defined(ACE_HAS_PTHREADS) && !defined(ACE_LACKS_SETSCHED) +#elif defined(ACE_HAS_PTHREADS) && !defined(ACE_LACKS_SETSCHED) switch (scope) { @@ -228,8 +228,8 @@ ACE_Sched_Params::next_priority (const Policy policy, default: return priority; // unknown priority: should never get here } -#elif defined (ACE_HAS_THREADS) && (defined (ACE_HAS_DCETHREADS) || !defined(ACE_LACKS_SETSCHED)) - // including STHREADS, DCETHREADS, and PTHREADS +#elif defined(ACE_HAS_THREADS) && !defined(ACE_LACKS_SETSCHED) + // including STHREADS, and PTHREADS const int max = priority_max (policy, scope); return priority < max ? priority + 1 : max; #else @@ -271,8 +271,8 @@ ACE_Sched_Params::previous_priority (const Policy policy, default: return priority; // unknown priority: should never get here } -#elif defined (ACE_HAS_THREADS) && (defined (ACE_HAS_DCETHREADS) || !defined(ACE_LACKS_SETSCHED)) - // including STHREADS, DCETHREADS, and PTHREADS +#elif defined (ACE_HAS_THREADS) && !defined(ACE_LACKS_SETSCHED) + // including STHREADS and PTHREADS const int min = priority_min (policy, scope); return priority > min ? priority - 1 : min; diff --git a/ace/Synch.cpp b/ace/Synch.cpp index 7a297349a32..a27a1ea9a32 100644 --- a/ace/Synch.cpp +++ b/ace/Synch.cpp @@ -657,7 +657,7 @@ ACE_Recursive_Thread_Mutex::dump (void) const this->lock_available_.dump (); this->nesting_mutex_.dump (); ACE_DEBUG ((LM_DEBUG, ASYS_TEXT("nesting_level_ = %d"), this->nesting_level_)); -#if !defined (ACE_HAS_DCETHREADS) && !defined (ACE_HAS_PTHREADS) +#if !defined (ACE_HAS_PTHREADS) ACE_DEBUG ((LM_DEBUG, ASYS_TEXT("\nowner_id_ = %u"), this->owner_id_)); #else ACE_DEBUG ((LM_DEBUG, ASYS_TEXT("\n"))); |