realtime for UE
This commit is contained in:
@@ -65,7 +65,7 @@ _Assert_(cOND, _Assert_Exit_, #vALUE1 ": %" PRIdMAX "\n" #vALUE2 ": %" PRIdMAX "
|
|||||||
(intmax_t)vALUE1, (intmax_t)vALUE2, (intmax_t)vALUE3)
|
(intmax_t)vALUE1, (intmax_t)vALUE2, (intmax_t)vALUE3)
|
||||||
|
|
||||||
#define DevCheck4(cOND, vALUE1, vALUE2, vALUE3, vALUE4) \
|
#define DevCheck4(cOND, vALUE1, vALUE2, vALUE3, vALUE4) \
|
||||||
_Assert_(cOND, _Assert_Exit_, #vALUE1": %"PRIdMAX"\n"#vALUE2": %"PRIdMAX"\n"#vALUE3": %"PRIdMAX"\n"#vALUE4": %"PRIdMAX"\n\n", \
|
_Assert_(cOND, _Assert_Exit_, #vALUE1": %" PRIdMAX "\n" #vALUE2 ": %" PRIdMAX "\n" #vALUE3 ": %" PRIdMAX "\n" #vALUE4 ": %" PRIdMAX "\n\n", \
|
||||||
(intmax_t)vALUE1, (intmax_t)vALUE2, (intmax_t)vALUE3, (intmax_t)vALUE4)
|
(intmax_t)vALUE1, (intmax_t)vALUE2, (intmax_t)vALUE3, (intmax_t)vALUE4)
|
||||||
|
|
||||||
#define DevParam(vALUE1, vALUE2, vALUE3) DevCheck(0, vALUE1, vALUE2, vALUE3)
|
#define DevParam(vALUE1, vALUE2, vALUE3) DevCheck(0, vALUE1, vALUE2, vALUE3)
|
||||||
|
|||||||
@@ -371,6 +371,9 @@ typedef struct {
|
|||||||
pthread_mutex_t mutex_rxtx;
|
pthread_mutex_t mutex_rxtx;
|
||||||
/// scheduling parameters for RXn-TXnp4 thread
|
/// scheduling parameters for RXn-TXnp4 thread
|
||||||
struct sched_param sched_param_rxtx;
|
struct sched_param sched_param_rxtx;
|
||||||
|
int sub_frame_start;
|
||||||
|
int sub_frame_step;
|
||||||
|
unsigned long long gotIQs;
|
||||||
} UE_rxtx_proc_t;
|
} UE_rxtx_proc_t;
|
||||||
|
|
||||||
/// Context data structure for eNB subframe processing
|
/// Context data structure for eNB subframe processing
|
||||||
|
|||||||
@@ -255,7 +255,7 @@ typedef struct protocol_ctxt_s {
|
|||||||
(Ctxt_Pp)->subframe = sUBfRAME; \
|
(Ctxt_Pp)->subframe = sUBfRAME; \
|
||||||
PROTOCOL_CTXT_COMPUTE_MODULE_ID(Ctxt_Pp)
|
PROTOCOL_CTXT_COMPUTE_MODULE_ID(Ctxt_Pp)
|
||||||
|
|
||||||
#define PROTOCOL_CTXT_FMT "[FRAME %05u][%s][MOD %02u][RNTI %"PRIx16"]"
|
#define PROTOCOL_CTXT_FMT "[FRAME %05u][%s][MOD %02u][RNTI %" PRIx16 "]"
|
||||||
#define PROTOCOL_CTXT_ARGS(CTXT_Pp) \
|
#define PROTOCOL_CTXT_ARGS(CTXT_Pp) \
|
||||||
(CTXT_Pp)->frame, \
|
(CTXT_Pp)->frame, \
|
||||||
((CTXT_Pp)->enb_flag == ENB_FLAG_YES) ? "eNB":" UE", \
|
((CTXT_Pp)->enb_flag == ENB_FLAG_YES) ? "eNB":" UE", \
|
||||||
|
|||||||
@@ -53,6 +53,26 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
extern double cpuf;
|
||||||
|
static inline unsigned long long rdtsc(void) {
|
||||||
|
unsigned long long a, d;
|
||||||
|
__asm__ volatile ("rdtsc" : "=a" (a), "=d" (d));
|
||||||
|
return (d<<32) | a;
|
||||||
|
}
|
||||||
|
static inline unsigned long long checkT(int timeout, char * file, int line) {
|
||||||
|
static unsigned long long __thread last=0;
|
||||||
|
unsigned long long cur=rdtsc();
|
||||||
|
int microCycles=(int)(cpuf*1000);
|
||||||
|
int duration=(int)((cur-last)/microCycles);
|
||||||
|
if ( last!=0 && duration > timeout )
|
||||||
|
printf("%s:%d lte-ue delay %d (exceed %d)\n", file, line,
|
||||||
|
duration, timeout);
|
||||||
|
last=cur;
|
||||||
|
return cur;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define check(a) checkT(a,__FILE__,__LINE__)
|
||||||
|
|
||||||
/** @defgroup _LOG LOG Generator
|
/** @defgroup _LOG LOG Generator
|
||||||
* @{*/
|
* @{*/
|
||||||
/* @}*/
|
/* @}*/
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
+884
-1501
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user