diff options
-rw-r--r-- | config/grc_usrp.m4 | 4 | ||||
-rw-r--r-- | gnuradio-core/src/lib/runtime/gr_realtime.cc | 29 | ||||
-rw-r--r-- | gr-usrp/src/run_tests.in | 4 |
3 files changed, 32 insertions, 5 deletions
diff --git a/config/grc_usrp.m4 b/config/grc_usrp.m4 index cc4f6a176..e28e6c28d 100644 --- a/config/grc_usrp.m4 +++ b/config/grc_usrp.m4 @@ -1,4 +1,4 @@ -dnl Copyright 2001,2002,2003,2004,2005,2006 Free Software Foundation, Inc. +dnl Copyright 2001,2002,2003,2004,2005,2006,2007 Free Software Foundation, Inc. dnl dnl This file is part of GNU Radio dnl @@ -54,7 +54,7 @@ AC_DEFUN([GRC_USRP],[ # These checks don't fail AC_C_BIGENDIAN AC_CHECK_HEADERS([byteswap.h linux/compiler.h]) - AC_CHECK_FUNCS([getrusage sched_setscheduler]) + AC_CHECK_FUNCS([getrusage sched_setscheduler pthread_setschedparam]) AC_CHECK_FUNCS([sigaction snprintf]) passed=yes diff --git a/gnuradio-core/src/lib/runtime/gr_realtime.cc b/gnuradio-core/src/lib/runtime/gr_realtime.cc index 878411df2..35d0ef381 100644 --- a/gnuradio-core/src/lib/runtime/gr_realtime.cc +++ b/gnuradio-core/src/lib/runtime/gr_realtime.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2006 Free Software Foundation, Inc. + * Copyright 2006,2007 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -58,6 +58,33 @@ gr_enable_realtime_scheduling() return RT_OK; } +#elif defined(HAVE_PTHREAD_SETSCHEDPARAM) + +#include <pthread.h> + +gr_rt_status_t +gr_enable_realtime_scheduling() +{ + int policy = SCHED_FIFO; + int pri = (sched_get_priority_max (policy) + + sched_get_priority_min (policy)) / 2; + pthread_t this_thread = pthread_self (); // this process + struct sched_param param; + memset (¶m, 0, sizeof (param)); + param.sched_priority = pri; + int result = pthread_setschedparam (this_thread, policy, ¶m); + if (result != 0) { + if (errno == EPERM) + return RT_NO_PRIVS; + else { + perror ("pthread_setschedparam: failed to set real time priority"); + return RT_OTHER_ERROR; + } + } + //printf("SCHED_FIFO enabled with priority = %d\n", pri); + return RT_OK; +} + // #elif // could try negative niceness #else diff --git a/gr-usrp/src/run_tests.in b/gr-usrp/src/run_tests.in index 49e9530cb..84ae973f4 100644 --- a/gr-usrp/src/run_tests.in +++ b/gr-usrp/src/run_tests.in @@ -5,11 +5,11 @@ # 3rd parameter is path to Python QA directory # For OS/X -DYLD_LIBRARY_PATH=@abs_top_builddir@/usrp/host/lib/:@abs_top_builddir@/usrp/host/lib/.libs:$DYLD_LIBRARY_PATH +DYLD_LIBRARY_PATH=@abs_top_builddir@/usrp/host/lib/legacy/:@abs_top_builddir@/usrp/host/lib/legacy/.libs:$DYLD_LIBRARY_PATH export DYLD_LIBRARY_PATH # For Win32 -PATH=@abs_top_builddir@/usrp/host/lib/.libs:$PATH +PATH=@abs_top_builddir@/usrp/host/lib/legacy/.libs:$PATH @top_builddir@/run_tests.sh \ @abs_top_srcdir@/gr-usrp \ |