From 29bfcdb371fc487ef0ff9dc06e0612c79421b6a9 Mon Sep 17 00:00:00 2001 From: Wang Tsu-Han <wangts@eurecom.fr> Date: Tue, 2 Jul 2019 14:36:35 +0200 Subject: [PATCH] modified uhd set priority to USRP only --- executables/nr-ru.c | 4 ++-- targets/ARCH/COMMON/common_lib.c | 14 ++++++-------- targets/ARCH/COMMON/common_lib.h | 8 +++++--- targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp | 10 +++++++--- 4 files changed, 20 insertions(+), 16 deletions(-) diff --git a/executables/nr-ru.c b/executables/nr-ru.c index f39449ddb62..d21afd869a0 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 7f7fe07b08f..65ca8b99824 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 fe1099f42fa..aca0bd64a27 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 b9c08938e3c..03f89cf6128 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); - } } /*@}*/ -- GitLab