os_pthread.h

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 
00003 //=============================================================================
00004 /**
00005  *  @file    os_pthread.h
00006  *
00007  *  threads
00008  *
00009  *  $Id: os_pthread.h 80826 2008-03-04 14:51:23Z wotte $
00010  *
00011  *  @author Don Hinton <dhinton@dresystems.com>
00012  *  @author This code was originally in various places including ace/OS.h.
00013  */
00014 //=============================================================================
00015 
00016 #ifndef ACE_OS_INCLUDE_OS_PTHREAD_H
00017 #define ACE_OS_INCLUDE_OS_PTHREAD_H
00018 
00019 #include /**/ "ace/pre.h"
00020 
00021 #include /**/ "ace/config-all.h"
00022 
00023 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00024 # pragma once
00025 #endif /* ACE_LACKS_PRAGMA_ONCE */
00026 
00027 #if defined (ACE_HAS_PRIOCNTL)
00028    // Need to #include thread.h before #defining THR_BOUND, etc.,
00029    // when building without threads on SunOS 5.x.
00030 #  if defined (sun)
00031 #    include /**/ <thread.h>
00032 #  endif /* sun */
00033 
00034    // Need to #include these before #defining USYNC_PROCESS on SunOS 5.x.
00035 #  include /**/ <sys/rtpriocntl.h>
00036 #  include /**/ <sys/tspriocntl.h>
00037 #endif /* ACE_HAS_PRIOCNTL */
00038 
00039 #include "ace/os_include/sys/os_types.h"
00040 
00041 // This needs to go here *first* to avoid problems with AIX.
00042 # if defined (ACE_HAS_PTHREADS)
00043 #   define ACE_DONT_INCLUDE_ACE_SIGNAL_H
00044 #     include "ace/os_include/os_signal.h"
00045 #   undef ACE_DONT_INCLUDE_ACE_SIGNAL_H
00046 #   if defined (DIGITAL_UNIX)
00047 #     define pthread_self __pthread_self
00048 extern "C" pthread_t pthread_self (void);
00049 #   endif /* DIGITAL_UNIX */
00050 # endif /* ACE_HAS_PTHREADS */
00051 
00052 
00053 #if !defined (ACE_LACKS_PTHREAD_H)
00054    extern "C" {
00055 #   if defined (ACE_TANDEM_T1248_PTHREADS)
00056 #   include /**/ <spthread.h>
00057 #   else
00058 #  include /**/ <pthread.h>
00059 #   endif
00060    }
00061 #endif /* !ACE_LACKS_PTHREAD_H */
00062 
00063 #if defined (ACE_HAS_PTHREAD_NP_H)
00064 // FreeBSD declares _np (non-portable) pthread extensions in <pthread_np.h>
00065 #  include /**/ <pthread_np.h>
00066 #endif
00067 
00068 // @todo: need to reoganize to put includes at the top and the rest of the
00069 // code at the bottom.  Also, move the classes out of this file.
00070 #if defined (ACE_HAS_PTHREADS)
00071 #  define ACE_SCHED_OTHER SCHED_OTHER
00072 #  define ACE_SCHED_FIFO SCHED_FIFO
00073 #  define ACE_SCHED_RR SCHED_RR
00074 
00075 // Definitions for THREAD- and PROCESS-LEVEL priorities...some
00076 // implementations define these while others don't.  In order to
00077 // further complicate matters, we don't redefine the default (*_DEF)
00078 // values if they've already been defined, which allows individual
00079 // programs to have their own ACE-wide "default".
00080 
00081 // PROCESS-level values
00082 #  if (defined (_POSIX_PRIORITY_SCHEDULING) || defined (ACE_TANDEM_T1248_PTHREADS)) \
00083    && !defined(_UNICOS) && !defined(UNIXWARE_7_1)
00084 #    define ACE_PROC_PRI_FIFO_MIN  (sched_get_priority_min(SCHED_FIFO))
00085 #    define ACE_PROC_PRI_RR_MIN    (sched_get_priority_min(SCHED_RR))
00086 #    if defined (HPUX)
00087        // HP-UX's other is the SCHED_HPUX class, which uses historical
00088        // values that have reverse semantics from POSIX (low value is
00089        // more important priority). To use these in pthreads calls,
00090        // the values need to be converted. The other scheduling classes
00091        // don't need this special treatment.
00092 #      define ACE_PROC_PRI_OTHER_MIN \
00093                       (sched_get_priority_min(SCHED_OTHER))
00094 #    else
00095 #      define ACE_PROC_PRI_OTHER_MIN (sched_get_priority_min(SCHED_OTHER))
00096 #    endif /* HPUX */
00097 #  else /* UNICOS is missing a sched_get_priority_min() implementation,
00098               SCO too */
00099 #    define ACE_PROC_PRI_FIFO_MIN  0
00100 #    define ACE_PROC_PRI_RR_MIN    0
00101 #    define ACE_PROC_PRI_OTHER_MIN 0
00102 #  endif
00103 
00104 #  if defined (_POSIX_PRIORITY_SCHEDULING) && !defined(UNIXWARE_7_1)
00105 #    define ACE_PROC_PRI_FIFO_MAX  (sched_get_priority_max(SCHED_FIFO))
00106 #    define ACE_PROC_PRI_RR_MAX    (sched_get_priority_max(SCHED_RR))
00107 #    if defined (HPUX)
00108 #      define ACE_PROC_PRI_OTHER_MAX \
00109                       (sched_get_priority_max(SCHED_OTHER))
00110 #    else
00111 #      define ACE_PROC_PRI_OTHER_MAX (sched_get_priority_max(SCHED_OTHER))
00112 #    endif /* HPUX */
00113 #  else /* SCO missing sched_get_priority_max() implementation */
00114 #    define ACE_PROC_PRI_FIFO_MAX  59
00115 #    define ACE_PROC_PRI_RR_MAX    59
00116 #    define ACE_PROC_PRI_OTHER_MAX 59
00117 #  endif
00118 
00119 #  if !defined(ACE_PROC_PRI_FIFO_DEF)
00120 #    define ACE_PROC_PRI_FIFO_DEF (ACE_PROC_PRI_FIFO_MIN + (ACE_PROC_PRI_FIFO_MAX - ACE_PROC_PRI_FIFO_MIN)/2)
00121 #  endif
00122 #  if !defined(ACE_PROC_PRI_RR_DEF)
00123 #    define ACE_PROC_PRI_RR_DEF (ACE_PROC_PRI_RR_MIN + (ACE_PROC_PRI_RR_MAX - ACE_PROC_PRI_RR_MIN)/2)
00124 #  endif
00125 #  if !defined(ACE_PROC_PRI_OTHER_DEF)
00126 #    define ACE_PROC_PRI_OTHER_DEF (ACE_PROC_PRI_OTHER_MIN + (ACE_PROC_PRI_OTHER_MAX - ACE_PROC_PRI_OTHER_MIN)/2)
00127 #  endif
00128 
00129 // THREAD-level values
00130 #  if defined(PRI_FIFO_MIN) && defined(PRI_FIFO_MAX) && defined(PRI_RR_MIN) && defined(PRI_RR_MAX) && defined(PRI_OTHER_MIN) && defined(PRI_OTHER_MAX)
00131 #    if !defined (ACE_THR_PRI_FIFO_MIN)
00132 #      define ACE_THR_PRI_FIFO_MIN  (long) PRI_FIFO_MIN
00133 #    endif /* !ACE_THR_PRI_FIFO_MIN */
00134 #    if !defined (ACE_THR_PRI_FIFO_MAX)
00135 #      define ACE_THR_PRI_FIFO_MAX  (long) PRI_FIFO_MAX
00136 #    endif /* !ACE_THR_PRI_FIFO_MAX */
00137 #    if !defined (ACE_THR_PRI_RR_MIN)
00138 #      define ACE_THR_PRI_RR_MIN    (long) PRI_RR_MIN
00139 #    endif /* !ACE_THR_PRI_RR_MIN */
00140 #    if !defined (ACE_THR_PRI_RR_MAX)
00141 #      define ACE_THR_PRI_RR_MAX    (long) PRI_RR_MAX
00142 #    endif /* !ACE_THR_PRI_RR_MAX */
00143 #    if !defined (ACE_THR_PRI_OTHER_MIN)
00144 #      define ACE_THR_PRI_OTHER_MIN (long) PRI_OTHER_MIN
00145 #    endif /* !ACE_THR_PRI_OTHER_MIN */
00146 #    if !defined (ACE_THR_PRI_OTHER_MAX)
00147 #      define ACE_THR_PRI_OTHER_MAX (long) PRI_OTHER_MAX
00148 #    endif /* !ACE_THR_PRI_OTHER_MAX */
00149 #  elif defined (AIX)
00150      // AIX's priority range is 1 (low) to 127 (high). There aren't
00151      // any preprocessor macros I can find. PRIORITY_MIN is for
00152      // process priorities, as far as I can see, and does not apply
00153      // to thread priority. The 1 to 127 range is from the
00154      // pthread_attr_setschedparam man page (Steve Huston, 18-May-2001).
00155 #    if !defined (ACE_THR_PRI_FIFO_MIN)
00156 #      define ACE_THR_PRI_FIFO_MIN  (long) 1
00157 #    endif /* !ACE_THR_PRI_FIFO_MIN */
00158 #    if !defined (ACE_THR_PRI_FIFO_MAX)
00159 #      define ACE_THR_PRI_FIFO_MAX  (long) 127
00160 #    endif /* !ACE_THR_PRI_FIFO_MAX */
00161 #    if !defined (ACE_THR_PRI_RR_MIN)
00162 #      define ACE_THR_PRI_RR_MIN    (long) 1
00163 #    endif /* !ACE_THR_PRI_RR_MIN */
00164 #    if !defined (ACE_THR_PRI_RR_MAX)
00165 #      define ACE_THR_PRI_RR_MAX    (long) 127
00166 #    endif /* !ACE_THR_PRI_RR_MAX */
00167 #    if !defined (ACE_THR_PRI_OTHER_MIN)
00168 #      define ACE_THR_PRI_OTHER_MIN (long) 1
00169 #    endif /* !ACE_THR_PRI_OTHER_MIN */
00170 #    if !defined (ACE_THR_PRI_OTHER_MAX)
00171 #      define ACE_THR_PRI_OTHER_MAX (long) 127
00172 #    endif /* !ACE_THR_PRI_OTHER_MAX */
00173 #  elif defined (sun)
00174 #    if !defined (ACE_THR_PRI_FIFO_MIN)
00175 #      define ACE_THR_PRI_FIFO_MIN  (long) 0
00176 #    endif /* !ACE_THR_PRI_FIFO_MIN */
00177 #    if !defined (ACE_THR_PRI_FIFO_MAX)
00178 #      define ACE_THR_PRI_FIFO_MAX  (long) 59
00179 #    endif /* !ACE_THR_PRI_FIFO_MAX */
00180 #    if !defined (ACE_THR_PRI_RR_MIN)
00181 #      define ACE_THR_PRI_RR_MIN    (long) 0
00182 #    endif /* !ACE_THR_PRI_RR_MIN */
00183 #    if !defined (ACE_THR_PRI_RR_MAX)
00184 #      define ACE_THR_PRI_RR_MAX    (long) 59
00185 #    endif /* !ACE_THR_PRI_RR_MAX */
00186 #    if !defined (ACE_THR_PRI_OTHER_MIN)
00187 #      define ACE_THR_PRI_OTHER_MIN (long) 0
00188 #    endif /* !ACE_THR_PRI_OTHER_MIN */
00189 #    if !defined (ACE_THR_PRI_OTHER_MAX)
00190 #      define ACE_THR_PRI_OTHER_MAX (long) 127
00191 #    endif /* !ACE_THR_PRI_OTHER_MAX */
00192 #  else
00193 #    if !defined (ACE_THR_PRI_FIFO_MIN)
00194 #      define ACE_THR_PRI_FIFO_MIN  (long) ACE_PROC_PRI_FIFO_MIN
00195 #    endif /* !ACE_THR_PRI_FIFO_MIN */
00196 #    if !defined (ACE_THR_PRI_FIFO_MAX)
00197 #      define ACE_THR_PRI_FIFO_MAX  (long) ACE_PROC_PRI_FIFO_MAX
00198 #    endif /* !ACE_THR_PRI_FIFO_MAX */
00199 #    if !defined (ACE_THR_PRI_RR_MIN)
00200 #      define ACE_THR_PRI_RR_MIN    (long) ACE_PROC_PRI_RR_MIN
00201 #    endif /* !ACE_THR_PRI_RR_MIN */
00202 #    if !defined (ACE_THR_PRI_RR_MAX)
00203 #      define ACE_THR_PRI_RR_MAX    (long) ACE_PROC_PRI_RR_MAX
00204 #    endif /* !ACE_THR_PRI_RR_MAX */
00205 #    if !defined (ACE_THR_PRI_OTHER_MIN)
00206 #      define ACE_THR_PRI_OTHER_MIN (long) ACE_PROC_PRI_OTHER_MIN
00207 #    endif /* !ACE_THR_PRI_OTHER_MIN */
00208 #    if !defined (ACE_THR_PRI_OTHER_MAX)
00209 #      define ACE_THR_PRI_OTHER_MAX (long) ACE_PROC_PRI_OTHER_MAX
00210 #    endif /* !ACE_THR_PRI_OTHER_MAX */
00211 #  endif
00212 #  if !defined(ACE_THR_PRI_FIFO_DEF)
00213 #    define ACE_THR_PRI_FIFO_DEF  ((ACE_THR_PRI_FIFO_MIN + ACE_THR_PRI_FIFO_MAX)/2)
00214 #  endif
00215 #  if !defined(ACE_THR_PRI_RR_DEF)
00216 #    define ACE_THR_PRI_RR_DEF ((ACE_THR_PRI_RR_MIN + ACE_THR_PRI_RR_MAX)/2)
00217 #  endif
00218 #  if !defined(ACE_THR_PRI_OTHER_DEF)
00219 #    define ACE_THR_PRI_OTHER_DEF ((ACE_THR_PRI_OTHER_MIN + ACE_THR_PRI_OTHER_MAX)/2)
00220 #  endif
00221    // Typedefs to help compatibility with Windows NT and Pthreads.
00222    typedef pthread_t ACE_hthread_t;
00223    typedef pthread_t ACE_thread_t;
00224 
00225    // native TSS key type
00226    typedef pthread_key_t ACE_OS_thread_key_t;
00227    // TSS key type to be used by application
00228 #  if defined (ACE_HAS_TSS_EMULATION)
00229      typedef u_int ACE_thread_key_t;
00230 #  else  /* ! ACE_HAS_TSS_EMULATION */
00231      typedef ACE_OS_thread_key_t ACE_thread_key_t;
00232 #  endif /* ! ACE_HAS_TSS_EMULATION */
00233 
00234 #  if !defined (ACE_LACKS_COND_T)
00235      typedef pthread_mutex_t ACE_mutex_t;
00236      typedef pthread_cond_t ACE_cond_t;
00237      typedef pthread_condattr_t ACE_condattr_t;
00238      typedef pthread_mutexattr_t ACE_mutexattr_t;
00239 #  endif /* ! ACE_LACKS_COND_T */
00240    typedef pthread_mutex_t ACE_thread_mutex_t;
00241 
00242 #  if !defined (PTHREAD_CANCEL_DISABLE)
00243 #    define PTHREAD_CANCEL_DISABLE      0
00244 #  endif /* PTHREAD_CANCEL_DISABLE */
00245 
00246 #  if !defined (PTHREAD_CANCEL_ENABLE)
00247 #    define PTHREAD_CANCEL_ENABLE       0
00248 #  endif /* PTHREAD_CANCEL_ENABLE */
00249 
00250 #  if !defined (PTHREAD_CANCEL_DEFERRED)
00251 #    define PTHREAD_CANCEL_DEFERRED     0
00252 #  endif /* PTHREAD_CANCEL_DEFERRED */
00253 
00254 #  if !defined (PTHREAD_CANCEL_ASYNCHRONOUS)
00255 #    define PTHREAD_CANCEL_ASYNCHRONOUS 0
00256 #  endif /* PTHREAD_CANCEL_ASYNCHRONOUS */
00257 
00258 #  define THR_CANCEL_DISABLE      PTHREAD_CANCEL_DISABLE
00259 #  define THR_CANCEL_ENABLE       PTHREAD_CANCEL_ENABLE
00260 #  define THR_CANCEL_DEFERRED     PTHREAD_CANCEL_DEFERRED
00261 #  define THR_CANCEL_ASYNCHRONOUS PTHREAD_CANCEL_ASYNCHRONOUS
00262 
00263 #  if !defined (PTHREAD_CREATE_JOINABLE)
00264 #    if defined (PTHREAD_CREATE_UNDETACHED)
00265 #      define PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED
00266 #    else
00267 #      define PTHREAD_CREATE_JOINABLE 0
00268 #    endif /* PTHREAD_CREATE_UNDETACHED */
00269 #  endif /* PTHREAD_CREATE_JOINABLE */
00270 
00271 #  if !defined (PTHREAD_CREATE_DETACHED)
00272 #    define PTHREAD_CREATE_DETACHED 1
00273 #  endif /* PTHREAD_CREATE_DETACHED */
00274 
00275 #  if !defined (PTHREAD_PROCESS_PRIVATE) && !defined (ACE_HAS_PTHREAD_PROCESS_ENUM)
00276 #    if defined (PTHREAD_MUTEXTYPE_FAST)
00277 #      define PTHREAD_PROCESS_PRIVATE PTHREAD_MUTEXTYPE_FAST
00278 #    else
00279 #      define PTHREAD_PROCESS_PRIVATE 0
00280 #    endif /* PTHREAD_MUTEXTYPE_FAST */
00281 #  endif /* PTHREAD_PROCESS_PRIVATE */
00282 
00283 #  if !defined (PTHREAD_PROCESS_SHARED) && !defined (ACE_HAS_PTHREAD_PROCESS_ENUM)
00284 #    if defined (PTHREAD_MUTEXTYPE_FAST)
00285 #      define PTHREAD_PROCESS_SHARED PTHREAD_MUTEXTYPE_FAST
00286 #    else
00287 #      define PTHREAD_PROCESS_SHARED 1
00288 #    endif /* PTHREAD_MUTEXTYPE_FAST */
00289 #  endif /* PTHREAD_PROCESS_SHARED */
00290 
00291 #  if !defined (ACE_HAS_STHREADS)
00292 #    if !defined (USYNC_THREAD)
00293 #      define USYNC_THREAD PTHREAD_PROCESS_PRIVATE
00294 #    endif /* ! USYNC_THREAD */
00295 #      if !defined (USYNC_PROCESS)
00296 #        define USYNC_PROCESS PTHREAD_PROCESS_SHARED
00297 #      endif /* ! USYNC_PROCESS */
00298 #  endif /* ACE_HAS_STHREADS */
00299 
00300    /* MM-Graz:  prevent warnings */
00301 #  if !defined (UNIXWARE_7_1)
00302 #    undef THR_BOUND
00303 #    undef THR_NEW_LWP
00304 #    undef THR_DETACHED
00305 #    undef THR_SUSPENDED
00306 #    undef THR_DAEMON
00307 
00308 #    define THR_BOUND               0x00000001
00309 #    define THR_NEW_LWP             0x00000002
00310 #    define THR_DETACHED            0x00000040
00311 #    define THR_SUSPENDED           0x00000080
00312 #    define THR_DAEMON              0x00000100
00313 #    define THR_SCHED_FIFO          0x00020000
00314 #    define THR_SCHED_RR            0x00040000
00315 #    define THR_SCHED_DEFAULT       0x00080000
00316 #  endif /* UNIXWARE_7_1 */
00317 
00318 #  define THR_JOINABLE            0x00010000
00319 
00320 #  if defined (ACE_HAS_IRIX62_THREADS)
00321 #    define THR_SCOPE_SYSTEM        0x00100000
00322 #  else
00323 #    define THR_SCOPE_SYSTEM        THR_BOUND
00324 #  endif /*ACE_HAS_IRIX62_THREADS*/
00325 
00326 #  define THR_SCOPE_PROCESS       0x00200000
00327 #  define THR_INHERIT_SCHED       0x00400000
00328 #  define THR_EXPLICIT_SCHED      0x00800000
00329 #  define THR_SCHED_IO            0x01000000
00330 
00331 #  if !defined (ACE_HAS_STHREADS)
00332 #    if !defined (ACE_HAS_POSIX_SEM) && !defined (ACE_USES_FIFO_SEM)
00333 
00334 // This needs to be moved out of here.
00335 #include /**/ "ace/ACE_export.h"
00336 /**
00337  * @class ACE_sema_t
00338  *
00339  * @brief This is used to implement semaphores for platforms that support
00340  * POSIX pthreads, but do *not* support POSIX semaphores, i.e.,
00341  * it's a different type than the POSIX <sem_t>.
00342  */
00343 class ACE_Export ACE_sema_t
00344 {
00345 public:
00346   /// Serialize access to internal state.
00347   ACE_mutex_t lock_;
00348 
00349   /// Block until there are no waiters.
00350   ACE_cond_t count_nonzero_;
00351 
00352   /// Count of the semaphore.
00353   u_long count_;
00354 
00355   /// Number of threads that have called <ACE_OS::sema_wait>.
00356   u_long waiters_;
00357 };
00358 #    endif /* !ACE_HAS_POSIX_SEM */
00359 
00360 #    if defined (ACE_LACKS_PTHREAD_YIELD) && defined (ACE_HAS_THR_YIELD)
00361        // If we are on Solaris we can just reuse the existing
00362        // implementations of these synchronization types.
00363 #      if !defined (ACE_LACKS_RWLOCK_T) && !defined (ACE_HAS_PTHREADS_UNIX98_EXT)
00364 #        include /**/ <synch.h>
00365          typedef rwlock_t ACE_rwlock_t;
00366 #      endif /* !ACE_LACKS_RWLOCK_T */
00367 #        include /**/ <thread.h>
00368 #    endif /* (ACE_LACKS_PTHREAD_YIELD) && defined (ACE_HAS_THR_YIELD) */
00369 
00370 #  else
00371 #    if !defined (ACE_HAS_POSIX_SEM)
00372        typedef sema_t ACE_sema_t;
00373 #    endif /* !ACE_HAS_POSIX_SEM */
00374 #  endif /* !ACE_HAS_STHREADS */
00375 
00376 #  if defined (ACE_HAS_PTHREADS_UNIX98_EXT)
00377      typedef pthread_rwlock_t ACE_rwlock_t;
00378 #   endif /* ACE_HAS_PTHREADS_UNIX98_EXT */
00379 
00380 #  if defined (__GLIBC__) && ((__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2))
00381 
00382      // glibc 2.2.x or better has pthread_mutex_timedlock()
00383 #    ifndef ACE_HAS_MUTEX_TIMEOUTS
00384 #      define ACE_HAS_MUTEX_TIMEOUTS
00385 #    endif  /* ACE_HAS_MUTEX_TIMEOUTS */
00386 
00387      // Use new pthread_attr_setstack if XPG6 support is enabled.
00388 #    if defined (_XOPEN_SOURCE) && (_XOPEN_SOURCE - 0) < 600
00389 #      define ACE_LACKS_PTHREAD_ATTR_SETSTACK
00390 #    endif /* (_XOPEN_SOURCE - 0) < 600 */
00391 
00392 #    if !defined (_XOPEN_SOURCE) \
00393      || (defined (_XOPEN_SOURCE) && (_XOPEN_SOURCE - 0) < 600)
00394        // pthread_mutex_timedlock() prototype is not visible if _XOPEN_SOURCE
00395        // is not >= 600 (i.e. for XPG6).
00396        extern "C" int pthread_mutex_timedlock (pthread_mutex_t *mutex,
00397                                              const struct timespec * abstime);
00398 #    endif  /* _XOPEN_SOURCE && _XOPEN_SOURCE < 600 */
00399 
00400 #  endif  /* linux && ((__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)) */
00401 
00402 #elif defined (ACE_HAS_STHREADS)
00403 #  if !defined (ACE_THR_PRI_FIFO_MIN)
00404 #    define ACE_THR_PRI_FIFO_MIN  (long) 0
00405 #  endif /* !ACE_THR_PRI_FIFO_MIN */
00406 #  if !defined (ACE_THR_PRI_FIFO_MAX)
00407 #    define ACE_THR_PRI_FIFO_MAX  (long) 59
00408 #  endif /* !ACE_THR_PRI_FIFO_MAX */
00409 #  if !defined (ACE_THR_PRI_RR_MIN)
00410 #    define ACE_THR_PRI_RR_MIN    (long) 0
00411 #  endif /* !ACE_THR_PRI_RR_MIN */
00412 #  if !defined (ACE_THR_PRI_RR_MAX)
00413 #    define ACE_THR_PRI_RR_MAX    (long) 59
00414 #  endif /* !ACE_THR_PRI_RR_MAX */
00415 #  if !defined (ACE_THR_PRI_OTHER_MIN)
00416 #    define ACE_THR_PRI_OTHER_MIN (long) 0
00417 #  endif /* !ACE_THR_PRI_OTHER_MIN */
00418 #  if !defined (ACE_THR_PRI_OTHER_MAX)
00419 #    define ACE_THR_PRI_OTHER_MAX (long) 127
00420 #  endif /* !ACE_THR_PRI_OTHER_MAX */
00421 #endif /* ACE_HAS_PTHREADS */
00422 
00423 #include /**/ "ace/post.h"
00424 #endif /* ACE_OS_INCLUDE_OS_PTHREAD_H */

Generated on Tue Feb 2 17:18:41 2010 for ACE by  doxygen 1.4.7