diff --git a/executables/nr-ru.c b/executables/nr-ru.c index f39449ddb62c83db185e1eacfcde40a2493d18d1..d21afd869a05cb5e78ce5d20e64c04f78a5b3c69 100644 --- a/executables/nr-ru.c +++ b/executables/nr-ru.c @@ -1209,9 +1209,9 @@ static void *ru_thread_tx( void *param ) { int ret; - if(ru->if_south == LOCAL_RF) + if(ru->rfdevice.uhd_set_thread_priority != NULL) { - //uhd_set_thread_prio(); + ru->rfdevice.uhd_set_thread_priority(); LOG_I(PHY,"set ru_thread_tx uhd priority"); } diff --git a/targets/ARCH/COMMON/common_lib.c b/targets/ARCH/COMMON/common_lib.c index 7f7fe07b08f7ed62174735ad4d89f18be09e2f61..65ca8b99824696458f3963ab3cb500225093b8dd 100644 --- a/targets/ARCH/COMMON/common_lib.c +++ b/targets/ARCH/COMMON/common_lib.c @@ -109,7 +109,6 @@ int load_lib(openair0_device *device, openair0_config_t *openair0_cfg, eth_param else libname=OAI_RF_LIBNAME; shlib_fdesc[0].fname="device_init"; - //shlib_fdesc[1].fname="uhd_set_thread_priority"; } else { libname=OAI_TP_LIBNAME; shlib_fdesc[0].fname="transport_init"; @@ -119,13 +118,12 @@ int load_lib(openair0_device *device, openair0_config_t *openair0_cfg, eth_param LOG_E(HW,"Library %s couldn't be loaded\n",libname); } else { ret=((devfunc_t)shlib_fdesc[0].fptr)(device,openair0_cfg,cfg); - //uhd_set_thread_priority_fun = (set_prio_func_t)shlib_fdesc[1].fptr; } return ret; } -/* -void uhd_set_thread_prio(void) { + +/*void uhd_set_thread_prio(void) { loader_shlibfunc_t shlib_fdesc[1]; int ret = 0; @@ -135,17 +133,17 @@ void uhd_set_thread_prio(void) { libname="rfsimulator"; else libname=OAI_RF_LIBNAME; - //shlib_fdesc[0].fname="uhd_set_thread_priority"; + shlib_fdesc[0].fname="uhd_set_thread_priority"; ret=load_module_shlib(libname,shlib_fdesc,1,NULL); if (ret < 0) { LOG_E(HW,"Library %s couldn't be loaded\n",libname); } else { - //(set_prio_func_t)shlib_fdesc[0].fptr(); + (set_prio_func_t)shlib_fdesc[0].fptr(); } return ret; -} -*/ +}*/ + int openair0_device_load(openair0_device *device, openair0_config_t *openair0_cfg) { diff --git a/targets/ARCH/COMMON/common_lib.h b/targets/ARCH/COMMON/common_lib.h index fe1099f42faf1219ea73454d487fce36b0689c83..aca0bd64a27ff39ac06125b42819d85b615abbfc 100644 --- a/targets/ARCH/COMMON/common_lib.h +++ b/targets/ARCH/COMMON/common_lib.h @@ -387,6 +387,10 @@ struct openair0_device_t { * \param arg pointer to capabilities or configuration */ void (*configure_rru)(int idx, void *arg); + + /*! \brief set UHD thread priority + */ + void (*uhd_set_thread_priority)(void); }; /* type of device init function, implemented in shared lib */ @@ -445,9 +449,7 @@ int openair0_set_rx_frequencies(openair0_device *device, openair0_config_t *open #define gettid() syscall(__NR_gettid) /*@}*/ - void uhd_set_thread_prio(void); - typedef void(*set_prio_func_t)(void); - //set_prio_func_t uhd_set_thread_priority_fun; + #ifdef __cplusplus } diff --git a/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp b/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp index b9c08938e3c2f347c8901441e1f2943c17b0ab12..03f89cf612839e7076cf3b7b94e13b823c233e4f 100644 --- a/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp +++ b/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp @@ -907,6 +907,12 @@ int trx_usrp_reset_stats(openair0_device *device) { return(0); } +/*! \brief Set uhd priority + */ +void uhd_set_thread_priority(void) { + uhd::set_thread_priority_safe(1.0); +} + #if defined(USRP_REC_PLAY) extern "C" { /*! \brief Initializer for USRP record/playback config @@ -1044,6 +1050,7 @@ extern "C" { device->trx_set_freq_func = trx_usrp_set_freq; device->trx_set_gains_func = trx_usrp_set_gains; device->openair0_cfg = openair0_cfg; + device->uhd_set_thread_priority = uhd_set_thread_priority; std::cerr << "USRP device initialized in subframes replay mode for " << u_sf_loops << " loops. Use mmap=" << use_mmap << std::endl; } else { @@ -1463,9 +1470,6 @@ extern "C" { return 0; } - void uhd_set_thread_priority(void) { - uhd::set_thread_priority_safe(1.0); - } } /*@}*/