fix bugs
This commit is contained in:
@@ -1,8 +1,8 @@
|
|||||||
all: measurement_display thread-pool-test
|
all: measurement_display thread-pool-test
|
||||||
|
|
||||||
measurement_display: measurement_display.c thread-pool.h
|
measurement_display: measurement_display.c thread-pool.h
|
||||||
gcc measurement_display.c -I /data/openairinterface5g.nr/common/utils/ -I. /data/openairinterface5g.nr/common/utils/backtrace.c -lpthread -D TEST_THREAD_POOL -I../LOG -I../../utils/T -o measurement_display
|
gcc measurement_display.c -I ${OPENAIR_DIR}/ -I ${OPENAIR_DIR}/common/utils/ -I. ${OPENAIR_DIR}/common/utils/backtrace.c -lpthread -D TEST_THREAD_POOL -I../LOG -I../../utils/T -o measurement_display
|
||||||
|
|
||||||
thread-pool-test: thread-pool.c thread-pool.h
|
thread-pool-test: thread-pool.c thread-pool.h
|
||||||
gcc -g thread-pool.c -I /data/openairinterface5g.nr/common/utils/ -I. /data/openairinterface5g.nr/common/utils/backtrace.c -lpthread -D TEST_THREAD_POOL -I../LOG -I../../utils/T -o thread-pool-test
|
gcc -g thread-pool.c -I ${OPENAIR_DIR}/ -I ${OPENAIR_DIR}/common/utils/ -I. ${OPENAIR_DIR}/common/utils/backtrace.c -I ${OPENAIR_DIR}/openair2/COMMON ${OPENAIR_DIR}/common/utils/LOG/log.c ${OPENAIR_DIR}/common/config/config_userapi.c ${OPENAIR_DIR}/common/config/config_load_configmodule.c ${OPENAIR_DIR}/common/config/config_cmdline.c -lpthread -ldl -D TEST_THREAD_POOL -I../LOG -I../../utils/T -o thread-pool-test
|
||||||
|
|
||||||
|
|||||||
@@ -151,6 +151,9 @@ void initTpool(char *params,tpool_t *pool, bool performanceMeas) {
|
|||||||
|
|
||||||
#ifdef TEST_THREAD_POOL
|
#ifdef TEST_THREAD_POOL
|
||||||
|
|
||||||
|
void exit_function(const char *file, const char *function, const int line, const char *s) {
|
||||||
|
}
|
||||||
|
|
||||||
struct testData {
|
struct testData {
|
||||||
int id;
|
int id;
|
||||||
char txt[30];
|
char txt[30];
|
||||||
|
|||||||
+24
-22
@@ -530,6 +530,7 @@ int computeSamplesShift(PHY_VARS_NR_UE *UE) {
|
|||||||
//LOG_I(PHY,"!!!adjusting +1 samples!!!\n");
|
//LOG_I(PHY,"!!!adjusting +1 samples!!!\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -605,6 +606,10 @@ void *UE_thread(void *arg) {
|
|||||||
decoded_frame_rx=proc->decoded_frame_rx;
|
decoded_frame_rx=proc->decoded_frame_rx;
|
||||||
// we do ++ first in the regular processing, so it will be 0;
|
// we do ++ first in the regular processing, so it will be 0;
|
||||||
absolute_slot=decoded_frame_rx*nb_slot_frame + nb_slot_frame -1;
|
absolute_slot=decoded_frame_rx*nb_slot_frame + nb_slot_frame -1;
|
||||||
|
|
||||||
|
while (tryPullTpool(&nf, Tpool) != NULL) {
|
||||||
|
};
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -683,28 +688,15 @@ void *UE_thread(void *arg) {
|
|||||||
UE->frame_parms.ofdm_symbol_size-UE->frame_parms.nb_prefix_samples0;
|
UE->frame_parms.ofdm_symbol_size-UE->frame_parms.nb_prefix_samples0;
|
||||||
notifiedFIFO_elt_t *res;
|
notifiedFIFO_elt_t *res;
|
||||||
|
|
||||||
if (getenv("RFSIMULATOR")) {
|
|
||||||
// FixMe: Wait previous thread is done, because race conditions seems too bad
|
|
||||||
// in case of actual RF board, the overlap between threads mitigate the issue
|
|
||||||
// We must receive one message, that proves the slot processing is done
|
|
||||||
while ((res=tryPullTpool(&nf, Tpool)) == NULL)
|
|
||||||
usleep(200);
|
|
||||||
|
|
||||||
nbSlotProcessing--;
|
|
||||||
processingData_t *tmp=(processingData_t *)res->msgData;
|
|
||||||
|
|
||||||
if (tmp->proc.decoded_frame_rx != -1)
|
|
||||||
decoded_frame_rx=tmp->proc.decoded_frame_rx;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (nbSlotProcessing >= RX_NB_TH ) {
|
while (nbSlotProcessing >= RX_NB_TH ) {
|
||||||
if ( (res=tryPullTpool(&nf, Tpool)) != NULL ) {
|
if ( (res=tryPullTpool(&nf, Tpool)) != NULL ) {
|
||||||
nbSlotProcessing--;
|
nbSlotProcessing--;
|
||||||
processingData_t *tmp=(processingData_t *)res->msgData;
|
processingData_t *tmp=(processingData_t *)res->msgData;
|
||||||
|
|
||||||
if (tmp->proc.decoded_frame_rx != -1)
|
if (tmp->proc.decoded_frame_rx != -1)
|
||||||
decoded_frame_rx=tmp->proc.decoded_frame_rx;
|
decoded_frame_rx=tmp->proc.decoded_frame_rx;
|
||||||
}
|
}
|
||||||
|
|
||||||
usleep(200);
|
usleep(200);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -712,8 +704,21 @@ void *UE_thread(void *arg) {
|
|||||||
((decoded_frame_rx+1) % MAX_FRAME_NUMBER) != proc->frame_rx )
|
((decoded_frame_rx+1) % MAX_FRAME_NUMBER) != proc->frame_rx )
|
||||||
LOG_D(PHY,"Decoded frame index (%d) is not compatible with current context (%d), UE should go back to synch mode\n",
|
LOG_D(PHY,"Decoded frame index (%d) is not compatible with current context (%d), UE should go back to synch mode\n",
|
||||||
decoded_frame_rx, proc->frame_rx);
|
decoded_frame_rx, proc->frame_rx);
|
||||||
|
|
||||||
nbSlotProcessing++;
|
nbSlotProcessing++;
|
||||||
|
processingMsg[thread_idx]->key=slot_nr;
|
||||||
pushTpool(Tpool, processingMsg[thread_idx]);
|
pushTpool(Tpool, processingMsg[thread_idx]);
|
||||||
|
|
||||||
|
if (getenv("RFSIMULATOR")) {
|
||||||
|
// FixMe: Wait previous thread is done, because race conditions seems too bad
|
||||||
|
// in case of actual RF board, the overlap between threads mitigate the issue
|
||||||
|
// We must receive one message, that proves the slot processing is done
|
||||||
|
res=pullTpool(&nf, Tpool);
|
||||||
|
nbSlotProcessing--;
|
||||||
|
processingData_t *tmp=(processingData_t *)res->msgData;
|
||||||
|
if (tmp->proc.decoded_frame_rx != -1)
|
||||||
|
decoded_frame_rx=tmp->proc.decoded_frame_rx;
|
||||||
|
}
|
||||||
} // while !oai_exit
|
} // while !oai_exit
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
@@ -739,20 +744,17 @@ void init_UE(int nb_inst) {
|
|||||||
nr_l2_init_ue();
|
nr_l2_init_ue();
|
||||||
mac_inst = get_mac_inst(inst);
|
mac_inst = get_mac_inst(inst);
|
||||||
mac_inst->if_module = UE->if_inst;
|
mac_inst->if_module = UE->if_inst;
|
||||||
|
|
||||||
// Initial bandwidth part configuration -- full carrier bandwidth
|
// Initial bandwidth part configuration -- full carrier bandwidth
|
||||||
mac_inst->initial_bwp_dl.bwp_id = 0;
|
mac_inst->initial_bwp_dl.bwp_id = 0;
|
||||||
mac_inst->initial_bwp_dl.location = 0;
|
mac_inst->initial_bwp_dl.location = 0;
|
||||||
mac_inst->initial_bwp_dl.scs = UE->frame_parms.subcarrier_spacing;
|
mac_inst->initial_bwp_dl.scs = UE->frame_parms.subcarrier_spacing;
|
||||||
mac_inst->initial_bwp_dl.N_RB = UE->frame_parms.N_RB_DL;
|
mac_inst->initial_bwp_dl.N_RB = UE->frame_parms.N_RB_DL;
|
||||||
mac_inst->initial_bwp_dl.cyclic_prefix = UE->frame_parms.Ncp;
|
mac_inst->initial_bwp_dl.cyclic_prefix = UE->frame_parms.Ncp;
|
||||||
|
|
||||||
mac_inst->initial_bwp_ul.bwp_id = 0;
|
mac_inst->initial_bwp_ul.bwp_id = 0;
|
||||||
mac_inst->initial_bwp_ul.location = 0;
|
mac_inst->initial_bwp_ul.location = 0;
|
||||||
mac_inst->initial_bwp_ul.scs = UE->frame_parms.subcarrier_spacing;
|
mac_inst->initial_bwp_ul.scs = UE->frame_parms.subcarrier_spacing;
|
||||||
mac_inst->initial_bwp_ul.N_RB = UE->frame_parms.N_RB_UL;
|
mac_inst->initial_bwp_ul.N_RB = UE->frame_parms.N_RB_UL;
|
||||||
mac_inst->initial_bwp_ul.cyclic_prefix = UE->frame_parms.Ncp;
|
mac_inst->initial_bwp_ul.cyclic_prefix = UE->frame_parms.Ncp;
|
||||||
|
|
||||||
LOG_I(PHY,"Intializing UE Threads for instance %d (%p,%p)...\n",inst,PHY_vars_UE_g[inst],PHY_vars_UE_g[inst][0]);
|
LOG_I(PHY,"Intializing UE Threads for instance %d (%p,%p)...\n",inst,PHY_vars_UE_g[inst],PHY_vars_UE_g[inst][0]);
|
||||||
AssertFatal(0 == pthread_create(&threads[inst],
|
AssertFatal(0 == pthread_create(&threads[inst],
|
||||||
&attr,
|
&attr,
|
||||||
|
|||||||
Reference in New Issue
Block a user