Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
oai
openairinterface5G
Commits
409b3d5c
Commit
409b3d5c
authored
Aug 03, 2018
by
Cedric Roux
Browse files
Merge remote-tracking branch 'origin/issue326_LOGreview' into develop_integration_2018_w31
parents
50815ab6
cba9d69b
Changes
183
Expand all
Hide whitespace changes
Inline
Side-by-side
cmake_targets/CMakeLists.txt
View file @
409b3d5c
...
...
@@ -897,7 +897,7 @@ set(UTIL_SRC
${
OPENAIR2_DIR
}
/UTIL/FIFO/pad_list.c
${
OPENAIR2_DIR
}
/UTIL/LISTS/list.c
${
OPENAIR2_DIR
}
/UTIL/LISTS/list2.c
${
OPENAIR
2
_DIR
}
/
UTIL
/LOG/log.c
${
OPENAIR_DIR
}
/
common/utils
/LOG/log.c
# ${OPENAIR2_DIR}/UTIL/LOG/vcd_signal_dumper.c
${
OPENAIR2_DIR
}
/UTIL/MATH/oml.c
${
OPENAIR2_DIR
}
/UTIL/MEM/mem_block.c
...
...
@@ -1214,7 +1214,7 @@ set(PHY_MEX_UE
${
OPENAIR1_DIR
}
/PHY/LTE_UE_TRANSPORT/dlsch_llr_computation_avx2.c
${
OPENAIR1_DIR
}
/PHY/TOOLS/signal_energy.c
${
OPENAIR1_DIR
}
/PHY/LTE_ESTIMATION/lte_ue_measurements.c
${
OPENAIR
2
_DIR
}
/
UTIL
/LOG/log.c
${
OPENAIR_DIR
}
/
common/utils
/LOG/log.c
)
add_library
(
PHY_MEX
${
PHY_MEX_UE
}
)
...
...
@@ -2175,7 +2175,7 @@ if (${T_TRACER})
#all "add_executable" definitions (except tests, rb_tool, updatefw)
lte-softmodem lte-softmodem-nos1 lte-uesoftmodem lte-uesoftmodem-nos1
dlsim_tm4 dlsim dlsim_tm7 ulsim pbchsim scansim mbmssim
pdcchsim pucchsim prachsim syncsim
pdcchsim pucchsim prachsim syncsim
ulsim
#all "add_library" definitions
ITTI RRC_LIB S1AP_LIB S1AP_ENB X2AP_LIB
oai_exmimodevif oai_usrpdevif oai_bladerfdevif oai_lmssdrdevif
...
...
cmake_targets/build_oai
View file @
409b3d5c
...
...
@@ -508,7 +508,9 @@ function main() {
lte_exec
=
lte-uesoftmodem
fi
fi
if
[
"
$T_TRACER
"
=
"False"
]
;
then
lte_build_dir
=
${
lte_build_dir
}
_noLOG
fi
# configuration module libraries, one currently available, using libconfig
config_libconfig_shlib
=
params_libconfig
...
...
common/config/config_cmdline.c
View file @
409b3d5c
...
...
@@ -37,6 +37,35 @@
#include <errno.h>
#include "config_userapi.h"
void
parse_stringlist
(
paramdef_t
*
cfgoptions
,
char
*
val
)
{
char
*
atoken
;
char
*
tokctx
;
char
*
tmpval
=
strdup
(
val
);
int
numelt
=
0
;
cfgoptions
->
numelt
=
0
;
atoken
=
strtok_r
(
tmpval
,
","
,
&
tokctx
);
while
(
atoken
!=
NULL
)
{
numelt
++
;
atoken
=
strtok_r
(
NULL
,
","
,
&
tokctx
);
}
free
(
tmpval
);
config_check_valptr
(
cfgoptions
,(
char
**
)
&
(
cfgoptions
->
strlistptr
),
sizeof
(
char
*
)
*
numelt
);
cfgoptions
->
numelt
=
numelt
;
atoken
=
strtok_r
(
val
,
","
,
&
tokctx
);
for
(
int
i
=
0
;
i
<
cfgoptions
->
numelt
&&
atoken
!=
NULL
;
i
++
)
{
config_check_valptr
(
cfgoptions
,
&
(
cfgoptions
->
strlistptr
[
i
]),
strlen
(
atoken
)
+
1
);
sprintf
(
cfgoptions
->
strlistptr
[
i
],
"%s"
,
atoken
);
printf_params
(
"[LIBCONFIG] %s[%i]: %s
\n
"
,
cfgoptions
->
optname
,
i
,
cfgoptions
->
strlistptr
[
i
]);
atoken
=
strtok_r
(
NULL
,
","
,
&
tokctx
);
}
cfgoptions
->
numelt
=
numelt
;
}
int
processoption
(
paramdef_t
*
cfgoptions
,
char
*
value
)
{
char
*
tmpval
=
value
;
...
...
@@ -66,6 +95,7 @@ char defbool[2]="1";
break
;
case
TYPE_STRINGLIST
:
parse_stringlist
(
cfgoptions
,
tmpval
);
break
;
case
TYPE_UINT32
:
case
TYPE_INT32
:
...
...
@@ -140,7 +170,7 @@ char *cfgpath;
exit_fun
(
"[CONFIG] Exiting after displaying help
\n
"
);
}
}
else
{
pp
=
strtok_r
(
NULL
,
"
_
"
,
&
tokctx
);
pp
=
strtok_r
(
NULL
,
"
"
,
&
tokctx
);
if
(
prefix
!=
NULL
&&
pp
!=
NULL
&&
strncasecmp
(
prefix
,
pp
,
strlen
(
pp
))
==
0
)
{
printf
(
"Help for %s section:
\n
"
,
prefix
);
config_printhelp
(
cfgoptions
,
numoptions
);
...
...
@@ -167,17 +197,19 @@ char *cfgpath;
((
strlen
(
oneargv
)
>
2
)
&&
(
strcmp
(
oneargv
+
2
,
cfgpath
)
==
0
))
)
{
char
*
valptr
=
NULL
;
int
ret
;
pp
=
config_get_if
()
->
argv
[
i
+
1
];
if
(
pp
!=
NULL
&&
c
>
1
)
{
ret
=
strlen
(
pp
);
if
(
ret
>
0
)
{
if
(
pp
[
0
]
!=
'-'
)
valptr
=
pp
;
else
if
(
ret
>
1
&&
pp
[
0
]
==
'-'
&&
isdigit
(
pp
[
1
])
)
valptr
=
pp
;
}
if
(
c
>
0
)
{
pp
=
config_get_if
()
->
argv
[
i
+
1
];
if
(
pp
!=
NULL
)
{
ret
=
strlen
(
pp
);
if
(
ret
>
0
)
{
if
(
pp
[
0
]
!=
'-'
)
valptr
=
pp
;
else
if
(
ret
>
1
&&
pp
[
0
]
==
'-'
&&
isdigit
(
pp
[
1
])
)
valptr
=
pp
;
}
}
}
j
+=
processoption
(
&
(
cfgoptions
[
n
]),
pp
);
j
+=
processoption
(
&
(
cfgoptions
[
n
]),
valptr
);
if
(
valptr
!=
NULL
)
{
i
++
;
c
--
;
...
...
openair2/UTIL
/LOG/README.txt
→
common/utils
/LOG/README.txt
View file @
409b3d5c
File moved
openair2/UTIL
/LOG/log.c
→
common/utils
/LOG/log.c
View file @
409b3d5c
This diff is collapsed.
Click to expand it.
openair2/UTIL
/LOG/log.h
→
common/utils
/LOG/log.h
View file @
409b3d5c
...
...
@@ -52,7 +52,7 @@
#define _GNU_SOURCE
#endif
#include <pthread.h>
#include "T.h"
/*----------------------------------------------------------------------------*/
#ifdef __cplusplus
...
...
@@ -73,8 +73,7 @@ extern "C" {
* @ingroup _macro
* @brief the macros that describe the maximum length of LOG
* @{*/
#define MAX_LOG_ITEM 100
/*!< \brief the maximum length of a LOG item, what is LOG_ITEM ??? */
#define MAX_LOG_INFO 1000
/*!< \brief the maximum length of a log */
#define MAX_LOG_TOTAL 1500
/*!< \brief the maximum length of a log */
/* @}*/
...
...
@@ -82,18 +81,15 @@ extern "C" {
* @ingroup _macro
* @brief LOG defines 9 levels of messages for users. Importance of these levels decrease gradually from 0 to 8
* @{*/
# define LOG_EMERG 0
/*!< \brief system is unusable */
# define LOG_ALERT 1
/*!< \brief action must be taken immediately */
# define LOG_CRIT 2
/*!< \brief critical conditions */
# define LOG_ERR 3
/*!< \brief error conditions */
# define LOG_WARNING 4
/*!< \brief warning conditions */
# define LOG_NOTICE 5
/*!< \brief normal but significant condition */
# define LOG_INFO 6
/*!< \brief informational */
# define LOG_DEBUG 7
/*!< \brief debug-level messages */
# define LOG_FILE 8
/*!< \brief message sequence chart -level */
# define LOG_TRACE 9
/*!< \brief trace-level messages */
# define LOG_MATLAB 10
/*!< \brief output to matlab file */
#define NUM_LOG_LEVEL 11
/*!< \brief the number of message levels users have with LOG */
# define OAILOG_ERR 0
/*!< \brief critical error conditions, impact on "must have" fuctinalities */
# define OAILOG_FILE 1
/*!< \brief important informational messages, but everything OK */
# define OAILOG_WARNING 2
/*!< \brief warning conditions, shouldn't happen but doesn't impact "must have" functionalities */
# define OAILOG_INFO 3
/*!< \brief informational messages most people don't need, shouldn't impact real-time behavior */
# define OAILOG_DEBUG 4
/*!< \brief first level debug-level messages, for developers , may impact real-time behavior */
# define OAILOG_TRACE 5
/*!< \brief second level debug-level messages, for developers ,likely impact real-time behavior*/
#define NUM_LOG_LEVEL 6
/*!< \brief the number of message levels users have with LOG */
/* @}*/
...
...
@@ -104,7 +100,7 @@ extern "C" {
/* .log_format = 0x13 uncolored standard messages
* .log_format = 0x93 colored standard messages */
/* keep white space in first position; switching it to 0 allows colors to be disabled*/
#define LOG_RED "\033[1;31m"
/*!< \brief VT100 sequence for bold red foreground */
#define LOG_GREEN "\033[32m"
/*!< \brief VT100 sequence for green foreground */
#define LOG_ORANGE "\033[93m"
/*!< \brief VT100 sequence for orange foreground */
...
...
@@ -118,34 +114,37 @@ extern "C" {
* @ingroup _macro
* @brief Macros used to write lines (local/remote) in syslog.conf
* @{*/
#define LOG_LOCAL 0x01
#define LOG_REMOTE 0x02
#define FLAG_COLOR 0x001
/*!< \brief defaults */
#define FLAG_PID 0x002
/*!< \brief defaults */
#define FLAG_COMP 0x004
#define FLAG_THREAD 0x008
/*!< \brief all : 255/511 */
#define FLAG_LEVEL 0x010
#define FLAG_FUNCT 0x020
#define FLAG_FILE_LINE 0x040
#define FLAG_TIME 0x100
#define LOG_NONE 0x00
#define LOG_LOW 0x5
#define LOG_MED 0x15
#define LOG_HIGH 0x35
#define LOG_FULL 0x75
#define OAI_OK 0
/*!< \brief all ok */
#define OAI_ERR 1
/*!< \brief generic error */
#define OAI_ERR_READ_ONLY 2
/*!< \brief tried to write to read-only item */
#define OAI_ERR_NOTFOUND 3
/*!< \brief something wasn't found */
/* @}*/
//static char *log_level_highlight_start[] = {LOG_RED, LOG_RED, LOG_RED, LOG_RED, LOG_BLUE, "", "", "", LOG_GREEN}; /*!< \brief Optional start-format strings for highlighting */
#define FLAG_NOCOLOR 0x0001
/*!< \brief use colors in log messages, depending on level */
#define FLAG_THREAD 0x0008
/*!< \brief display thread name in log messages */
#define FLAG_LEVEL 0x0010
/*!< \brief display log level in log messages */
#define FLAG_FUNCT 0x0020
#define FLAG_FILE_LINE 0x0040
#define FLAG_TIME 0x0100
#define SET_LOG_OPTION(O) g_log->flag = (g_log->flag | O)
#define CLEAR_LOG_OPTION(O) g_log->flag = (g_log->flag & (~O))
/** @defgroup macros to identify a debug entity
* @ingroup each macro is a bit mask where the unique bit set identifies an entity to be debugged
* it allows to dynamically activate or not blocks of code
* @brief
* @{*/
#define DEBUG_PRACH (1<<0)
#define DEBUG_RU (1<<1)
#define DEBUG_UE_PHYPROC (1<<2)
#define DEBUG_LTEESTIM (1<<3)
#define DEBUG_CTRLSOCKET (1<<10)
#define UE_TIMING (1<<20)
#define SET_LOG_DEBUG(O) g_log->debug_mask = (g_log->debug_mask | O)
#define CLEAR_LOG_DEBUG(O) g_log->debug_mask = (g_log->debug_mask & (~O))
#define SET_LOG_MATLAB(O) g_log->matlab_mask = (g_log->matlab_mask | O)
#define CLEAR_LOG_MATLAB(O) g_log->matlab_mask = (g_log->matlab_mask & (~O))
//static char *log_level_highlight_end[] = {LOG_RESET, LOG_RESET, LOG_RESET, LOG_RESET, LOG_RESET, "", "", "", LOG_RESET}; /*!< \brief Optional end-format strings for highlighting */
typedef
enum
{
MIN_LOG_COMPONENTS
=
0
,
...
...
@@ -193,60 +192,40 @@ comp_name_t;
#define MAX_LOG_DYNALLOC_COMPONENTS 20
#define MAX_LOG_COMPONENTS (MAX_LOG_PREDEF_COMPONENTS + MAX_LOG_DYNALLOC_COMPONENTS)
//#define msg printf
typedef
struct
{
char
*
name
;
/*!< \brief string name of item */
int
value
;
/*!< \brief integer value of mapping */
}
mapping
;
typedef
int
(
*
log_write_func_t
)(
FILE
*
stream
,
const
char
*
format
,
va_list
ap
);
typedef
struct
{
const
char
*
name
;
int
level
;
int
flag
;
int
interval
;
int
fd
;
int
filelog
;
char
*
filelog_n
am
e
;
const
char
*
name
;
int
level
;
int
flag
;
int
interval
;
int
filelog
;
char
*
filelog
_name
;
FILE
*
stre
am
;
log_write_func_t
fwrite
;
/* SR: make the log buffer component relative */
char
log_buffer
[
MAX_LOG_TOTAL
];
char
log_buffer
[
MAX_LOG_TOTAL
];
}
log_component_t
;
typedef
struct
{
unsigned
int
remote_ip
;
unsigned
int
audit_ip
;
int
remote_level
;
int
facility
;
int
audit_facility
;
int
format
;
}
log_config_t
;
typedef
struct
{
log_component_t
log_component
[
MAX_LOG_COMPONENTS
];
log_config_t
config
;
char
*
level2string
[
NUM_LOG_LEVEL
];
int
level
;
int
onlinelog
;
int
flag
;
int
syslog
;
int
filelog
;
char
*
filelog_name
;
int
async
;
// asynchronous mode, via dedicated log thread + log buffer
uint64_t
debug_mask
;
uint64_t
matlab_mask
;
}
log_t
;
typedef
struct
LOG_params
{
const
char
*
file
;
const
char
*
func
;
int
line
;
int
comp
;
int
level
;
const
char
*
format
;
char
l_buff_info
[
MAX_LOG_INFO
];
int
len
;
}
LOG_params
;
#if defined(ENABLE_ITTI)
typedef
enum
log_instance_type_e
{
...
...
@@ -258,10 +237,6 @@ typedef enum log_instance_type_e {
void
log_set_instance_type
(
log_instance_type_t
instance
);
#endif
#define LOG_MEM_SIZE 100*1024*1024
#define LOG_MEM_FILE "./logmem.log"
int
logInit_log_mem
(
void
);
void
output_log_mem
(
void
);
#ifdef LOG_MAIN
log_t
*
g_log
;
...
...
@@ -279,28 +254,20 @@ extern log_t *g_log;
/*----------------------------------------------------------------------------*/
int
logInit
(
void
);
void
logRecord_mt
(
const
char
*
file
,
const
char
*
func
,
int
line
,
int
comp
,
int
level
,
const
char
*
format
,
...)
__attribute__
((
format
(
printf
,
6
,
7
)));
void
logRecord
(
const
char
*
file
,
const
char
*
func
,
int
line
,
int
comp
,
int
level
,
const
char
*
format
,
...)
__attribute__
((
format
(
printf
,
6
,
7
)));
int
set_comp_log
(
int
component
,
int
level
,
int
verbosity
,
int
interval
);
int
set_log
(
int
component
,
int
level
,
int
interval
);
void
set_glog
(
int
level
,
int
verbosity
);
void
set_log_syslog
(
int
enable
);
void
set_glog
(
int
level
);
void
set_glog_onlinelog
(
int
enable
);
void
set_glog_filelog
(
int
enable
);
void
set_component_filelog
(
int
comp
);
int
map_str_to_int
(
mapping
*
map
,
const
char
*
str
);
char
*
map_int_to_str
(
mapping
*
map
,
int
val
);
void
logClean
(
void
);
int
is_newline
(
char
*
str
,
int
size
);
void
*
log_thread_function
(
void
*
list
);
int
register_log_component
(
char
*
name
,
char
*
fext
,
int
compidx
);
/** @defgroup _logIt logIt function
* @ingroup _macro
* @brief Macro used to call tr_log_full_ex with file, function and line information
* @{*/
#define logIt(component, level, format, args...) (g_log->log_component[component].interval?logRecord_mt(__FILE__, __FUNCTION__, __LINE__, component, level, format, ##args):(void)0)
int
register_log_component
(
char
*
name
,
char
*
fext
,
int
compidx
);
/* @}*/
...
...
@@ -319,24 +286,34 @@ int32_t write_file_matlab(const char *fname, const char *vname, void *data, int
#define CONFIG_STRING_LOG_PREFIX "log_config"
#define LOG_CONFIG_STRING_GLOBAL_LOG_LEVEL "global_log_level"
#define LOG_CONFIG_STRING_GLOBAL_LOG_VERBOSITY "global_log_verbosity"
#define LOG_CONFIG_STRING_GLOBAL_LOG_ONLINE "global_log_online"
#define LOG_CONFIG_STRING_GLOBAL_LOG_INFILE "global_log_infile"
#define LOG_CONFIG_STRING_GLOBAL_LOG_OPTIONS "global_log_options"
#define LOG_CONFIG_LEVEL_FORMAT "%s_log_level"
#define LOG_CONFIG_VERBOSITY_FORMAT "%s_log_verbosity"
#define LOG_CONFIG_LOGFILE_FORMAT "%s_log_infile"
#define LOG_CONFIG_DEBUG_FORMAT "%s_debug"
#define LOG_CONFIG_MATLAB_FORMAT "%s_matlab"
#define LOG_CONFIG_HELP_OPTIONS " list of comma separated options to enable log module behavior. Available options: \n"\
" nocolor: disable color usage in log messages\n"\
" level: add log level indication in log messages\n"\
" thread: add threads names in log messages\n"
/*--------------------------------------------------------------------------------------------------------------------------------------------------------------*/
/* LOG globalconfiguration parameters */
/* optname help paramflags XXXptr defXXXval type numelt */
/*--------------------------------------------------------------------------------------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
/* LOG globalconfiguration parameters */
/* optname help paramflags XXXptr defXXXval type numelt */
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
#define LOG_GLOBALPARAMS_DESC { \
{LOG_CONFIG_STRING_GLOBAL_LOG_LEVEL, NULL, 0, strptr:(char **)&gloglevel, defstrval:log_level_names[2].name, TYPE_STRING, 0}, \
{LOG_CONFIG_STRING_GLOBAL_LOG_VERBOSITY,NULL, 0, strptr:(char **)&glogverbo, defstrval:log_verbosity_names[2].name, TYPE_STRING, 0}, \
{LOG_CONFIG_STRING_GLOBAL_LOG_ONLINE, NULL, 0, iptr:&(g_log->onlinelog), defintval:1, TYPE_INT, 0}, \
{LOG_CONFIG_STRING_GLOBAL_LOG_INFILE, NULL, 0, iptr:&(g_log->filelog), defintval:0, TYPE_INT, 0}, \
{LOG_CONFIG_STRING_GLOBAL_LOG_LEVEL, "Default log level for all componemts\n", 0, strptr:(char **)&gloglevel, defstrval:log_level_names[2].name, TYPE_STRING, 0}, \
{LOG_CONFIG_STRING_GLOBAL_LOG_ONLINE, "Default console output option, for all components\n", 0, iptr:&(g_log->onlinelog), defintval:1, TYPE_INT, 0}, \
{LOG_CONFIG_STRING_GLOBAL_LOG_OPTIONS, LOG_CONFIG_HELP_OPTIONS, 0, strlistptr:NULL, defstrlistval:NULL, TYPE_STRINGLIST,0} \
}
#define LOG_OPTIONS_IDX 2
/*----------------------------------------------------------------------------------*/
/** @defgroup _debugging debugging macros
* @ingroup _macro
...
...
@@ -344,32 +321,46 @@ int32_t write_file_matlab(const char *fname, const char *vname, void *data, int
* @{*/
// debugging macros(g_log->log_component[component].interval?logRecord_mt(__FILE__, __FUNCTION__, __LINE__, component, level, format, ##args):(void)0)
# if T_TRACER
# include "T.h"
# define LOG_I(c, x...) do { if (T_stdout) { logIt(c, LOG_INFO, x) ;} else { T(T_LEGACY_ ## c ## _INFO, T_PRINTF(x)) ;}} while (0)
# define LOG_W(c, x...) do { if (T_stdout) { logIt(c, LOG_WARNING, x) ;} else { T(T_LEGACY_ ## c ## _WARNING, T_PRINTF(x)) ;}} while (0)
# define LOG_E(c, x...) do { if (T_stdout) { logIt(c, LOG_ERR, x) ;} else { T(T_LEGACY_ ## c ## _ERROR, T_PRINTF(x)) ;}} while (0)
# define LOG_D(c, x...) do { if (T_stdout) { logIt(c, LOG_DEBUG, x) ;} else { T(T_LEGACY_ ## c ## _DEBUG, T_PRINTF(x)) ;}} while (0)
# define LOG_T(c, x...) do { if (T_stdout) { logIt(c, LOG_TRACE, x) ;} else { T(T_LEGACY_ ## c ## _TRACE, T_PRINTF(x)) ;}} while (0)
# define LOG_G(c, x...) do { if (T_stdout) { logIt(c, LOG_EMERG, x) ;}} while (0)
/* */
# define LOG_A(c, x...) do { if (T_stdout) { logIt(c, LOG_ALERT, x) ;}} while (0)
/* */
# define LOG_C(c, x...) do { if (T_stdout) { logIt(c, LOG_CRIT, x) ;}} while (0)
/* */
# define LOG_N(c, x...) do { if (T_stdout) { logIt(c, LOG_NOTICE, x) ;}} while (0)
/* */
# define LOG_F(c, x...) do { if (T_stdout) { logIt(c, LOG_FILE, x) ;}} while (0)
/* */
# define LOG_M(file, vector, data, len, dec, format) write_file_matlab(file, vector, data, len, dec, format)
/* */
# else
/* T_TRACER */
# if T_TRACER
/* per component, level dependant macros */
# define LOG_I(c, x...) do { if (T_stdout) { if( g_log->log_component[c].level >= OAILOG_INFO ) logRecord_mt(__FILE__, __FUNCTION__, __LINE__,c, OAILOG_INFO, x) ;} else { T(T_LEGACY_ ## c ## _INFO, T_PRINTF(x)) ;}} while (0)
# define LOG_W(c, x...) do { if (T_stdout) { if( g_log->log_component[c].level >= OAILOG_WARNING) logRecord_mt(__FILE__, __FUNCTION__, __LINE__,c, OAILOG_WARNING, x) ;} else { T(T_LEGACY_ ## c ## _WARNING, T_PRINTF(x)) ;}} while (0)
# define LOG_E(c, x...) do { if (T_stdout) { if( g_log->log_component[c].level >= OAILOG_ERR ) logRecord_mt(__FILE__, __FUNCTION__, __LINE__,c, OAILOG_ERR, x) ;} else { T(T_LEGACY_ ## c ## _ERROR, T_PRINTF(x)) ;}} while (0)
# define LOG_D(c, x...) do { if (T_stdout) { if( g_log->log_component[c].level >= OAILOG_DEBUG ) logRecord_mt(__FILE__, __FUNCTION__, __LINE__,c, OAILOG_DEBUG, x) ;} else { T(T_LEGACY_ ## c ## _DEBUG, T_PRINTF(x)) ;}} while (0)
# define LOG_T(c, x...) do { if (T_stdout) { if( g_log->log_component[c].level >= OAILOG_TRACE ) logRecord_mt(__FILE__, __FUNCTION__, __LINE__,c, OAILOG_TRACE, x) ;} else { T(T_LEGACY_ ## c ## _TRACE, T_PRINTF(x)) ;}} while (0)
# define LOG_F(c, x...) do { if (T_stdout) { if( g_log->log_component[c].level >= OAILOG_FILE ) logRecord_mt(__FILE__, __FUNCTION__, __LINE__,c, OAILOG_FILE, x) ;}} while (0)
/* */
# define nfapi_log(FILE, FNC, LN, COMP, LVL, F...) do { if (T_stdout) { logRecord_mt(__FILE__, __FUNCTION__, __LINE__,COMP, LVL, F) ;}} while (0)
/* */
/* bitmask dependant macros, to isolate debugging code */
# define LOG_DEBUG_BEGIN(D) if (g_log->debug_mask & D) {
# define LOG_DEBUG_END }
/* bitmask dependant macros, to generate matlab files */
# define LOG_M_BEGIN(D) if (g_log->matlab_mask & D) {
# define LOG_M_END }
# define LOG_M(file, vector, data, len, dec, format) do { write_file_matlab(file, vector, data, len, dec, format);} while(0)
/* */
/* define variable only used in LOG macro's */
# define LOG_VAR(A,B) A B
# else
/* T_TRACER: remove all debugging and tracing messages, except errors */
# define LOG_I(c, x...)
/* */
# define LOG_W(c, x...)
/* */
# define LOG_E(c, x...)
/* */
# define LOG_D(c, x...)
/* */
# define LOG_T(c, x...)
/* */
# define LOG_G(c, x...)
/* */
# define LOG_A(c, x...)
/* */
# define LOG_C(c, x...)
/* */
# define LOG_N(c, x...)
/* */
# define LOG_F(c, x...)
/* */
# define LOG_M(file, vector, data, len, dec, format)
/* */
# define nfapi_log(FILE, FNC, LN, COMP, LVL, FMT...)
# define LOG_DEBUG_BEGIN(D) if (0) {
# define LOG_DEBUG_END }
# define LOG_M_BEGIN(D) if (0) {
# define LOG_M_END }
# define LOG_M(file, vector, data, len, dec, format)
# define LOG_VAR(A,B)
# endif
/* T_TRACER */
/* avoid warnings for variables only used in LOG macro's but set outside debug section */
#define LOG_USEDINLOG_VAR(A,B) __attribute__((unused)) A B
/* unfiltered macros, usefull for simulators or messages at init time, before log is configured */
#define LOG_UM(file, vector, data, len, dec, format) do { write_file_matlab(file, vector, data, len, dec, format);} while(0)
#define LOG_UI(c, x...) do {logRecord_mt(__FILE__, __FUNCTION__, __LINE__,c, OAILOG_INFO, x) ; } while(0)
/* @}*/
...
...
openair2/UTIL
/LOG/log_extern.h
→
common/utils
/LOG/log_extern.h
View file @
409b3d5c
...
...
@@ -23,15 +23,8 @@
extern
log_t
*
g_log
;
#if !defined(LOG_NO_THREAD)
extern
LOG_params
log_list
[
2000
];
extern
pthread_mutex_t
log_lock
;
extern
pthread_cond_t
log_notify
;
extern
int
log_shutdown
;
#endif
extern
mapping
log_level_names
[];
extern
mapping
log_verbosity_names
[];
extern
mapping
log_options
[];
extern
mapping
log_maskmap
[];
extern
int
log_mem_flag
;
extern
char
*
log_mem_filename
;
openair2/UTIL
/LOG/log_if.h
→
common/utils
/LOG/log_if.h
View file @
409b3d5c
File moved
openair2/UTIL
/LOG/vcd_signal_dumper.c
→
common/utils
/LOG/vcd_signal_dumper.c
View file @
409b3d5c
File moved
openair2/UTIL
/LOG/vcd_signal_dumper.h
→
common/utils
/LOG/vcd_signal_dumper.h
View file @
409b3d5c
File moved
common/utils/T/T_messages.txt
View file @
409b3d5c
...
...
@@ -749,7 +749,6 @@ ID = LEGACY_OSA_TRACE
DESC = OSA legacy logs - trace level
GROUP = ALL:LEGACY_OSA:LEGACY_GROUP_TRACE:LEGACY
FORMAT = string,log
ID = LEGACY_SIM_INFO
DESC = SIM legacy logs - info level
GROUP = ALL:LEGACY_SIM:LEGACY_GROUP_INFO:LEGACY
...
...
@@ -770,7 +769,6 @@ ID = LEGACY_SIM_TRACE
DESC = SIM legacy logs - trace level
GROUP = ALL:LEGACY_SIM:LEGACY_GROUP_TRACE:LEGACY
FORMAT = string,log
# this is a bad hack but I won't fix (function util_print_hex_octets
# in openairinterface5g/openair2/LAYER2/PDCP_v10.1.0/pdcp_util.c
# does funky things with the LOG_x macros but we work on the C pre-processor
...
...
common/utils/itti/assertions.h
View file @
409b3d5c
...
...
@@ -39,7 +39,6 @@ void output_log_mem(void);
#define _Assert_Exit_ \
{ \
fprintf(stderr, "\nExiting execution\n"); \
output_log_mem(); \
display_backtrace(); \
fflush(stdout); \
fflush(stderr); \
...
...
common/utils/itti/signals.c
View file @
409b3d5c
...
...
@@ -117,19 +117,16 @@ int signal_handle(int *end)
case
SIGUSR1
:
SIG_DEBUG
(
"Received SIGUSR1
\n
"
);
*
end
=
1
;
output_log_mem
();
break
;
case
SIGSEGV
:
/* Fall through */
case
SIGABRT
:
SIG_DEBUG
(
"Received SIGABORT
\n
"
);
output_log_mem
();
backtrace_handle_signal
(
&
info
);
break
;
case
SIGINT
:
printf
(
"Received SIGINT
\n
"
);
output_log_mem
();
itti_send_terminate_message
(
TASK_UNKNOWN
);
*
end
=
1
;
break
;
...
...
common/utils/telnetsrv/telnetsrv_loader.h
View file @
409b3d5c
...
...
@@ -32,7 +32,7 @@
#ifdef TELNETSRV_LOADER_MAIN
#include "
UTIL
/LOG/log.h"
#include "
common/utils
/LOG/log.h"
#include "common/utils/load_module_shlib.h"
...
...
common/utils/telnetsrv/telnetsrv_phycmd.h
View file @
409b3d5c
...
...
@@ -32,7 +32,7 @@
#ifdef TELNETSRV_PHYCMD_MAIN
#include "
UTIL
/LOG/log.h"
#include "
common/utils
/LOG/log.h"
#include "openair1/PHY/phy_extern.h"
...
...
common/utils/telnetsrv/telnetsrv_proccmd.c
View file @
409b3d5c
...
...
@@ -52,8 +52,7 @@
#define TELNETSERVERCODE
#include "telnetsrv.h"
#define TELNETSRV_PROCCMD_MAIN
#include "log.h"
#include "log_extern.h"
#include "common/utils/LOG/log.h"
#include "common/config/config_userapi.h"
#include "openair1/PHY/phy_extern.h"
#include "telnetsrv_proccmd.h"
...
...
@@ -200,16 +199,30 @@ int proccmd_show(char *buf, int debug, telnet_printfunc_t prnt)
print_threads
(
buf
,
debug
,
prnt
);
}
if
(
strcasestr
(
buf
,
"loglvl"
)
!=
NULL
)
{
prnt
(
"
component
verbosity
level enabled
\n
"
);
prnt
(
"
component
level enabled
\n
"
);
for
(
int
i
=
MIN_LOG_COMPONENTS
;
i
<
MAX_LOG_COMPONENTS
;
i
++
)
{
if
(
g_log
->
log_component
[
i
].
name
!=
NULL
)
{
prnt
(
"%02i %17.17s:%10.10s%10.10s %s
\n
"
,
i
,
g_log
->
log_component
[
i
].
name
,
map_int_to_str
(
log_verbosity_names
,
g_log
->
log_component
[
i
].
flag
),
prnt
(
"%02i %17.17s:%10.10s %s
\n
"
,
i
,
g_log
->
log_component
[
i
].
name
,
map_int_to_str
(
log_level_names
,
g_log
->
log_component
[
i
].
level
),
((
g_log
->
log_component
[
i
].
interval
>
0
)
?
"Y"
:
"N"
)
);
}
}
}
if
(
strcasestr
(
buf
,
"logopt"
)
!=
NULL
)
{
prnt
(
" option enabled
\n
"
);
for
(
int
i
=
0
;
log_options
[
i
].
name
!=
NULL
;
i
++
)
{
prnt
(
"%02i %17.17s %10.10s
\n
"
,
i
,
log_options
[
i
].
name
,
((
g_log
->
flag
&
log_options
[
i
].
value
)
?
"Y"
:
"N"
)
);
}
}
if
(
strcasestr
(
buf
,
"dbgopt"
)
!=
NULL
)
{
prnt
(
" option debug matlab
\n
"
);
for
(
int
i
=
0
;
log_maskmap
[
i
].
name
!=
NULL
;
i
++
)
{
prnt
(
"%02i %17.17s %5.5s %5.5s
\n
"
,
i
,
log_maskmap
[
i
].
name
,
((
g_log
->
debug_mask
&
log_maskmap
[
i
].
value
)
?
"Y"
:
"N"
),
((
g_log
->
matlab_mask
&
log_maskmap
[
i
].
value
)
?
"Y"
:
"N"
)
);
}
}
if
(
strcasestr
(
buf
,
"config"
)
!=
NULL
)
{
prnt
(
"Command line arguments:
\n
"
);
for
(
int
i
=
0
;
i
<
config_get_if
()
->
argc
;
i
++
)
{
...
...
@@ -324,24 +337,76 @@ int s = sscanf(buf,"%ms %i-%i\n",&logsubcmd, &idx1,&idx2);
prnt
(
"Available log levels:
\n
"
);
for
(
int
i
=
0
;
log_level_names
[
i
].
name
!=
NULL
;
i
++
)
prnt
(
"%s "
,
log_level_names
[
i
].
name
);
prnt
(
"
\n
Available verbosity:
\n
"
);
for
(
int
i
=
0
;
log_verbosity_names
[
i
].
name
!=
NULL
;
i
++
)
prnt
(
"%s "
,
log_verbosity_names
[
i
].
name
);
prnt
(
"
\n
"
);
prnt
(
"Available display options:
\n
"
);
for
(
int
i
=
0
;
log_options
[
i
].
name
!=
NULL
;
i
++
)
prnt
(
"%s "
,
log_options
[
i
].
name
);
prnt
(
"
\n
"
);
prnt
(
"Available debug or matlab options:
\n
"
);
for
(
int
i
=
0
;
log_maskmap
[
i
].
name
!=
NULL
;
i
++
)
prnt
(
"%s "
,
log_maskmap
[
i
].
name
);
prnt
(
"
\n
"
);