summaryrefslogtreecommitdiff
path: root/gnuradio-runtime/lib/realtime_impl.cc
diff options
context:
space:
mode:
authorSebastian Koslowski <koslowski@kit.edu>2016-06-10 15:15:16 +0200
committerSebastian Koslowski <koslowski@kit.edu>2016-07-13 16:30:36 +0200
commit893b74c770b81f2c09094577e2de720155f84b61 (patch)
treece430f554cf032c70eab8a95228731afbffc6efd /gnuradio-runtime/lib/realtime_impl.cc
parent7ac7cf6246e4d984d36c64df10ba4d2b2f6b2204 (diff)
parent6fb0ff274a05daf2f2677af14337704fb88081f7 (diff)
Merge remote-tracking branch 'grcwg/next_grcwg' into gtk3
Diffstat (limited to 'gnuradio-runtime/lib/realtime_impl.cc')
-rw-r--r--gnuradio-runtime/lib/realtime_impl.cc70
1 files changed, 35 insertions, 35 deletions
diff --git a/gnuradio-runtime/lib/realtime_impl.cc b/gnuradio-runtime/lib/realtime_impl.cc
index 54db9d8d70..83afd9568d 100644
--- a/gnuradio-runtime/lib/realtime_impl.cc
+++ b/gnuradio-runtime/lib/realtime_impl.cc
@@ -65,7 +65,41 @@ namespace gr {
#endif
-#if defined(HAVE_PTHREAD_SETSCHEDPARAM)
+#if defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
+
+#include <windows.h>
+
+namespace gr {
+ namespace impl {
+
+ rt_status_t enable_realtime_scheduling(rt_sched_param p)
+ {
+ //set the priority class on the process
+ int pri_class = (true)? REALTIME_PRIORITY_CLASS : NORMAL_PRIORITY_CLASS;
+ if(SetPriorityClass(GetCurrentProcess(), pri_class) == 0)
+ return RT_OTHER_ERROR;
+
+ //scale the priority value to the constants
+ int priorities[] = {
+ THREAD_PRIORITY_IDLE, THREAD_PRIORITY_LOWEST, THREAD_PRIORITY_BELOW_NORMAL, THREAD_PRIORITY_NORMAL,
+ THREAD_PRIORITY_ABOVE_NORMAL, THREAD_PRIORITY_HIGHEST, THREAD_PRIORITY_TIME_CRITICAL
+ };
+ const double priority = double(p.priority)/(rt_priority_max() - rt_priority_min());
+ size_t pri_index = size_t((priority+1.0)*6/2.0); // -1 -> 0, +1 -> 6
+ pri_index %= sizeof(priorities)/sizeof(*priorities); //range check
+
+ //set the thread priority on the thread
+ if(SetThreadPriority(GetCurrentThread(), priorities[pri_index]) == 0)
+ return RT_OTHER_ERROR;
+
+ //printf("SetPriorityClass + SetThreadPriority\n");
+ return RT_OK;
+ }
+
+ } // namespace impl
+} // namespace gr
+
+#elif defined(HAVE_PTHREAD_SETSCHEDPARAM)
namespace gr {
namespace impl {
@@ -141,40 +175,6 @@ namespace gr {
} // namespace impl
} // namespace gr
-#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
-
-#include <windows.h>
-
-namespace gr {
- namespace impl {
-
- rt_status_t enable_realtime_scheduling(rt_sched_param p)
- {
- //set the priority class on the process
- int pri_class = (true)? REALTIME_PRIORITY_CLASS : NORMAL_PRIORITY_CLASS;
- if(SetPriorityClass(GetCurrentProcess(), pri_class) == 0)
- return RT_OTHER_ERROR;
-
- //scale the priority value to the constants
- int priorities[] = {
- THREAD_PRIORITY_IDLE, THREAD_PRIORITY_LOWEST, THREAD_PRIORITY_BELOW_NORMAL, THREAD_PRIORITY_NORMAL,
- THREAD_PRIORITY_ABOVE_NORMAL, THREAD_PRIORITY_HIGHEST, THREAD_PRIORITY_TIME_CRITICAL
- };
- const double priority = double(p.priority)/(rt_priority_max() - rt_priority_min());
- size_t pri_index = size_t((priority+1.0)*6/2.0); // -1 -> 0, +1 -> 6
- pri_index %= sizeof(priorities)/sizeof(*priorities); //range check
-
- //set the thread priority on the thread
- if(SetThreadPriority(GetCurrentThread(), priorities[pri_index]) == 0)
- return RT_OTHER_ERROR;
-
- //printf("SetPriorityClass + SetThreadPriority\n");
- return RT_OK;
- }
-
- } // namespace impl
-} // namespace gr
-
#else
namespace gr {