diff options
author | huangming <huangminghuang@users.noreply.github.com> | 2003-12-03 23:07:59 +0000 |
---|---|---|
committer | huangming <huangminghuang@users.noreply.github.com> | 2003-12-03 23:07:59 +0000 |
commit | 9370da3b9ed481f67ac00c65d0d860852b20fef5 (patch) | |
tree | 137d5034f9e85d03aeee988510f40cb190af947c | |
parent | aca361b90022e482e1d18f8ad93c49098dfecfc0 (diff) | |
download | ATCD-9370da3b9ed481f67ac00c65d0d860852b20fef5.tar.gz |
*** empty log message ***
-rw-r--r-- | TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/RT_Task.cpp | 79 | ||||
-rw-r--r-- | TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/RT_Task.h | 2 |
2 files changed, 42 insertions, 39 deletions
diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/RT_Task.cpp b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/RT_Task.cpp index 01a86aa7367..406b893c557 100644 --- a/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/RT_Task.cpp +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/RT_Task.cpp @@ -5,33 +5,36 @@ #define ENABLE_RT_CLASS 0 -void RT_Task::set_current() +namespace { + bool enable_rt_class; +}; + +void RT_Task::enable() { -#if ENABLE_RT_CLASS == 1 + enable_rt_class = true; ACE_hthread_t thr_handle; ACE_Thread::self (thr_handle); long prio = ACE_Sched_Params::priority_max(ACE_SCHED_FIFO); if (ACE_OS::thr_setprio(thr_handle, prio, ACE_SCHED_FIFO) == -1){ ACE_DEBUG((LM_DEBUG, "Cannot set the thread to RT class\n")); } -#endif } int RT_Task::activate(ACE_Task_Base* task) { -#if ENABLE_RT_CLASS == 1 - long priority = ACE_Sched_Params::priority_max(ACE_SCHED_FIFO); - long flags = THR_NEW_LWP; + if (enable_rt_class) { + long priority = ACE_Sched_Params::priority_max(ACE_SCHED_FIFO); + long flags = THR_NEW_LWP; - // To get FIFO scheduling with PTHREADS. - ACE_SET_BITS (flags, - THR_SCHED_FIFO); + // To get FIFO scheduling with PTHREADS. + ACE_SET_BITS (flags, + THR_SCHED_FIFO); - // Become an active object. - if (task->activate (flags, - 1, - 0, - priority) == -1) + // Become an active object. + if (task->activate (flags, + 1, + 0, + priority) == -1) { ACE_DEBUG((LM_DEBUG, "Cannot activate the thread in RT class\n")); @@ -43,37 +46,37 @@ int RT_Task::activate(ACE_Task_Base* task) long fallback_priority = ACE_Sched_Params::priority_min (ACE_SCHED_OTHER, - ACE_SCOPE_THREAD); + ACE_SCOPE_THREAD); ACE_DEBUG ((LM_DEBUG, - ACE_TEXT ("(%t) task activation at priority %d with ") - ACE_TEXT ("flags 0x%X failed; retry at priority %d with ") - ACE_TEXT ("flags 0x%X (errno is %d%p)\n"), - priority, - flags, - fallback_priority, - THR_NEW_LWP, - errno, - ACE_TEXT (""))); + ACE_TEXT ("(%t) task activation at priority %d with ") + ACE_TEXT ("flags 0x%X failed; retry at priority %d with ") + ACE_TEXT ("flags 0x%X (errno is %d%p)\n"), + priority, + flags, + fallback_priority, + THR_NEW_LWP, + errno, + ACE_TEXT (""))); flags = THR_NEW_LWP; priority = fallback_priority; if (task->activate (flags, - 1, - 1, - priority) == -1) - { + 1, + 1, + priority) == -1) + { - ACE_DEBUG ((LM_ERROR, - ACE_TEXT ("(%t) task activation at priority %d failed, ") - ACE_TEXT ("exiting!\n%a"), - priority, - -1)); - } + ACE_DEBUG ((LM_ERROR, + ACE_TEXT ("(%t) task activation at priority %d failed, ") + ACE_TEXT ("exiting!\n%a"), + priority, + -1)); + } } - return 0; -#else - return task->activate(); -#endif + return 0; + } + else + return task->activate(); } diff --git a/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/RT_Task.h b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/RT_Task.h index 35a9340f24b..1a9de596ad5 100644 --- a/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/RT_Task.h +++ b/TAO/orbsvcs/orbsvcs/FtRtEvent/Utils/RT_Task.h @@ -17,7 +17,7 @@ class ACE_Task_Base; class TAO_FtRtEvent_Export RT_Task { public: - static void set_current(); + static void enable(); static int activate(ACE_Task_Base*); }; |