• Cedric Roux's avatar
    bugfix: fix threading in the UE · 572ff37a
    Cedric Roux authored
    Various problems were found with the basic simulator.
    
    Variables used by various threads for synchronization need to
    be initialized properly. That is before the various threads
    start using them.
    
    This goes for:
    - UE->is_synchronized
    - UE->proc.instance_cnt_synch
    - UE->proc.instance_cnt_rxtx
    
    The function "UE->rfdevice.trx_start_func" was called in
    "UE_thread_synch" but should be called in "UE_thread" because
    "UE_thread" is the one that calls "UE->rfdevice.trx_read_func"
    and there is no guaranty that the call to "UE->rfdevice.trx_start_func"
    is done before as it has to (it's in another thread).
    
    And finally "pthread_cond_signal(&proc->cond_rxtx)" was called twice,
    which may not be a problem but was certainly not intended. Plus
    removing one call simplifies the code by removing some "if" logic,
    which is a good thing per se.
    
    This commit was not tested with a real UE and may thus introduce some
    issues. Hopefully not!
    572ff37a
lte-ue.c 74.4 KB