Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wangwenhui
OpenXG-RAN
Commits
16eb4509
Commit
16eb4509
authored
Sep 29, 2017
by
oai
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add generic shared lib loader
parent
30abbdf8
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
138 additions
and
52 deletions
+138
-52
cmake_targets/CMakeLists.txt
cmake_targets/CMakeLists.txt
+9
-0
cmake_targets/build_oai
cmake_targets/build_oai
+21
-2
common/config/config_cmdline.c
common/config/config_cmdline.c
+31
-39
common/utils/load_module_shlib.c
common/utils/load_module_shlib.c
+52
-0
common/utils/load_module_shlib.h
common/utils/load_module_shlib.h
+11
-0
common/utils/telnetsrv/CMakeLists.txt
common/utils/telnetsrv/CMakeLists.txt
+2
-1
common/utils/telnetsrv/load_telnet.h
common/utils/telnetsrv/load_telnet.h
+0
-5
common/utils/telnetsrv/telnetsrv.h
common/utils/telnetsrv/telnetsrv.h
+2
-2
targets/RT/USER/lte-softmodem.c
targets/RT/USER/lte-softmodem.c
+6
-1
targets/RT/USER/lte-softmodem.h
targets/RT/USER/lte-softmodem.h
+4
-2
No files found.
cmake_targets/CMakeLists.txt
View file @
16eb4509
...
...
@@ -502,6 +502,10 @@ set (CONFIG_LIBCONFIG_SOURCES
)
add_library
(
params_libconfig MODULE
${
CONFIG_LIBCONFIG_SOURCES
}
)
target_link_libraries
(
params_libconfig config
)
# shared library loader
set
(
SHLIB_LOADER_SOURCES
${
OPENAIR_DIR
}
/common/utils/load_module_shlib.c
)
# include RF devices / transport protocols library modules
######################################################################
...
...
@@ -1767,6 +1771,7 @@ add_executable(lte-softmodem
${
XFORMS_SOURCE_SOFTMODEM
}
${
T_SOURCE
}
${
CONFIG_SOURCES
}
${
SHLIB_LOADER_SOURCES
}
)
target_link_libraries
(
lte-softmodem -ldl
...
...
@@ -1802,6 +1807,7 @@ add_executable(lte-softmodem-nos1
${
XFORMS_SOURCE_SOFTMODEM
}
${
T_SOURCE
}
${
CONFIG_SOURCES
}
${
SHLIB_LOADER_SOURCES
}
)
target_link_libraries
(
lte-softmodem-nos1
-Wl,--start-group
...
...
@@ -1890,6 +1896,7 @@ add_executable(oaisim
${
XFORMS_SOURCE
}
${
T_SOURCE
}
${
CONFIG_SOURCES
}
${
SHLIB_LOADER_SOURCES
}
)
...
...
@@ -1933,6 +1940,8 @@ add_executable(oaisim_nos1
${
OPENAIR_DIR
}
/common/utils/system.c
${
XFORMS_SOURCE
}
${
T_SOURCE
}
${
CONFIG_SOURCES
}
${
SHLIB_LOADER_SOURCES
}
)
target_include_directories
(
oaisim_nos1 PUBLIC
${
OPENAIR_TARGETS
}
/SIMU/USER
)
target_link_libraries
(
oaisim_nos1
...
...
cmake_targets/build_oai
View file @
16eb4509
...
...
@@ -345,7 +345,11 @@ function main() {
BUILD_ECLIPSE
=
1
CMAKE_CMD
=
"
$CMAKE_CMD
"
' -DCMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT=TRUE -G"Eclipse CDT4 - Unix Makefiles"'
echo_info
"Enabling build eclipse project support"
shift
1
;;
shift
1
;;
--build-telnetsrv
)
BUILD_TELNETSRV
=
1
echo_info
"Build embedded telnet server"
shift
;;
-h
|
--help
)
print_help
exit
1
;;
...
...
@@ -811,7 +815,22 @@ function main() {
rrh_gw
$dbin
/rrh_gw
fi
# Telnet server compilation
#####################
if
[
"
$BUILD_TELNETSRV
"
=
"1"
]
;
then
telnetsrv_build_dir
=
telnetsrv
mkdir
-p
$DIR
/
$telnetsrv_build_dir
/build
cd
$DIR
/
$telnetsrv_build_dir
/build
echo_info
"Compiling telnet server library ..."
[
"
$CLEAN
"
=
"1"
]
&&
rm
-rf
$DIR
/
$telnetsrv_build_dir
cmake_file
=
$OPENAIR_DIR
/common/utils/
$telnetsrv_build_dir
/CMakeLists.txt
cd
$DIR
/
$telnetsrv_build_dir
/build
eval
"
$CMAKE_CMD
$OPENAIR_DIR
/common/utils/
$telnetsrv_build_dir
/"
make
fi
# build RF device and transport protocol libraries
#####################################
if
[
"
$eNB
"
=
"1"
-o
"
$UE
"
=
"1"
-o
"
$RRH
"
=
"1"
]
;
then
...
...
common/config/config_cmdline.c
View file @
16eb4509
...
...
@@ -37,24 +37,16 @@
int
processoption
(
paramdef_t
*
cfgoptions
,
char
*
value
)
{
int
argok
=
1
;
char
*
tmpval
=
value
;
int
optisset
;
int
optisset
=
0
;
char
defbool
[
2
]
=
"1"
;
if
(
value
==
NULL
)
{
argok
=
0
;
}
else
if
(
value
[
0
]
==
'-'
)
{
argok
=
0
;
}
if
((
cfgoptions
->
paramflags
&
PARAMFLAG_BOOL
)
==
0
)
{
/* not a boolean, argument required */
if
(
argok
==
0
)
{
if
(
((
cfgoptions
->
paramflags
&
PARAMFLAG_BOOL
)
==
0
)
&&
value
==
NULL
)
{
/* not a boolean, argument required */
fprintf
(
stderr
,
"[CONFIG] command line, option %s requires an argument
\n
"
,
cfgoptions
->
optname
);
return
0
;
}
}
else
{
/* boolean value */
tmpval
=
defbool
;
}
else
{
/* boolean value option without argument, set value to true*/
tmpval
=
defbool
;
}
switch
(
cfgoptions
->
type
)
{
case
TYPE_STRING
:
...
...
@@ -107,7 +99,7 @@ char defbool[2]="1";
cfgoptions
->
paramflags
=
cfgoptions
->
paramflags
|
PARAMFLAG_PARAMSET
;
}
return
argok
;
return
optisset
;
}
int
config_process_cmdline
(
paramdef_t
*
cfgoptions
,
int
numoptions
,
char
*
prefix
)
...
...
@@ -115,6 +107,7 @@ int config_process_cmdline(paramdef_t *cfgoptions,int numoptions, char *prefix)
char
**
p
=
config_get_if
()
->
argv
;
int
c
=
config_get_if
()
->
argc
;
int
j
;
char
*
pp
;
char
*
cfgpath
;
j
=
(
prefix
==
NULL
)
?
0
:
strlen
(
prefix
);
...
...
@@ -131,32 +124,31 @@ char *cfgpath;
if
(
strcmp
(
*
p
,
"-h"
)
==
0
||
strcmp
(
*
p
,
"--help"
)
==
0
)
{
config_printhelp
(
cfgoptions
,
numoptions
);
}
for
(
int
i
=
0
;
i
<
numoptions
;
i
++
)
{
if
(
(
cfgoptions
[
i
].
paramflags
&
PARAMFLAG_DISABLECMDLINE
)
!=
0
)
{
continue
;
}
if
(
prefix
!=
NULL
)
{
sprintf
(
cfgpath
,
"%s.%s"
,
prefix
,
cfgoptions
[
i
].
optname
);
}
else
{
sprintf
(
cfgpath
,
"%s"
,
cfgoptions
[
i
].
optname
);
}
if
(
((
strlen
(
*
p
)
==
2
)
&&
(
strcmp
(
*
p
+
1
,
cfgpath
)
==
0
))
||
((
strlen
(
*
p
)
>
2
)
&&
(
strcmp
(
*
p
+
2
,
cfgpath
)
==
0
))
)
{
if
(
c
>
1
)
{
p
++
;
c
--
;
j
=
processoption
(
&
(
cfgoptions
[
i
]),
*
p
);
if
(
j
==
0
)
{
c
++
;
p
--
;
}
}
else
{
j
=
processoption
(
&
(
cfgoptions
[
i
]),
NULL
);
}
if
(
*
p
[
0
]
==
'-'
)
{
for
(
int
i
=
0
;
i
<
numoptions
;
i
++
)
{
if
(
(
cfgoptions
[
i
].
paramflags
&
PARAMFLAG_DISABLECMDLINE
)
!=
0
)
{
continue
;
}
if
(
prefix
!=
NULL
)
{
sprintf
(
cfgpath
,
"%s.%s"
,
prefix
,
cfgoptions
[
i
].
optname
);
}
else
{
sprintf
(
cfgpath
,
"%s"
,
cfgoptions
[
i
].
optname
);
}
if
(
((
strlen
(
*
p
)
==
2
)
&&
(
strcmp
(
*
p
+
1
,
cfgpath
)
==
0
))
||
((
strlen
(
*
p
)
>
2
)
&&
(
strcmp
(
*
p
+
2
,
cfgpath
)
==
0
))
)
{
pp
=
*
(
p
+
1
);
if
(
(
pp
!=
NULL
)
&&
(
pp
[
0
]
!=
'-'
)
)
{
p
++
;
c
--
;
j
+=
processoption
(
&
(
cfgoptions
[
i
]),
pp
);
}
else
{
j
+=
processoption
(
&
(
cfgoptions
[
i
]),
NULL
);
}
}
}
}
}
/* for */
}
/* if (*p[0] == '-') */
p
++
;
c
--
;
}
/* fin du while */
...
...
common/utils/
telnetsrv/load_telnet
.c
→
common/utils/
load_module_shlib
.c
View file @
16eb4509
...
...
@@ -11,35 +11,42 @@
#include <string.h>
#include <sys/ioctl.h>
#include <dlfcn.h>
#include "telnetsrv.h"
#include "openair1/PHY/defs.h"
int
load_telnet
(
void
)
#define LOAD_MODULE_SHLIB_MAIN
#include "load_module_shlib.h"
int
load_module_shlib
(
char
*
modname
)
{
void
*
lib_handle
;
initfunc_t
fpi
;
char
*
tmpstr
;
int
ret
=
0
;
lib_handle
=
dlopen
(
TELNETSRV_SHAREDLIB
,
RTLD_LAZY
|
RTLD_NODELETE
|
RTLD_GLOBAL
);
if
(
!
lib_handle
)
{
printf
(
"[TELNETSRV] telnet server is not loaded: %s
\n
"
,
dlerror
());
return
-
1
;
}
fpi
=
dlsym
(
lib_handle
,
"init_telnetsrv"
);
tmpstr
=
malloc
(
strlen
(
modname
)
+
16
);
if
(
tmpstr
==
NULL
)
{
fprintf
(
stderr
,
"[LOADER] %s %d malloc error loading module %s, %s
\n
"
,
__FILE__
,
__LINE__
,
modname
,
strerror
(
errno
));
return
-
1
;
}
sprintf
(
tmpstr
,
"lib%s.so"
,
modname
);
lib_handle
=
dlopen
(
tmpstr
,
RTLD_LAZY
|
RTLD_NODELETE
|
RTLD_GLOBAL
);
if
(
!
lib_handle
)
{
printf
(
"[LOADER] library %s is not loaded: %s
\n
"
,
tmpstr
,
dlerror
());
ret
=
-
1
;
}
else
{
sprintf
(
tmpstr
,
"init_%s"
,
modname
);
fpi
=
dlsym
(
lib_handle
,
tmpstr
);
if
(
fpi
!=
NULL
)
if
(
fpi
!=
NULL
)
{
fpi
(
cfgfile
);
fpi
();
}
else
{
fprintf
(
stderr
,
"[TELNETSRV] %s %d Telnet server init function not found %s
\n
"
,
__FILE__
,
__LINE__
,
dlerror
());
return
-
1
;
}
fprintf
(
stderr
,
"[LOADER] %s %d %s function not found %s
\n
"
,
__FILE__
,
__LINE__
,
dlerror
(),
tmpstr
);
ret
=
-
1
;
}
}
dlclose
(
lib_handle
);
return
0
;
if
(
tmpstr
!=
NULL
)
free
(
tmpstr
);
if
(
lib_handle
!=
NULL
)
dlclose
(
lib_handle
);
return
ret
;
}
common/utils/load_module_shlib.h
0 → 100644
View file @
16eb4509
#ifndef LOAD_SHLIB_H
#define LOAD_SHLIB_H
typedef
int
(
*
initfunc_t
)(
void
);
#ifdef LOAD_MODULE_SHLIB_MAIN
#else
extern
int
load_module_shlib
(
char
*
modname
);
#endif
#endif
common/utils/telnetsrv/CMakeLists.txt
View file @
16eb4509
...
...
@@ -8,8 +8,9 @@ ELSE()
ENDIF
()
set
(
APPROOT .
)
set
(
OPENAIR_DIR $ENV{OPENAIR_DIR}
)
set
(
APPROOT
${
OPENAIR_DIR
}
/common/utils/telnetsrv
)
set
(
OPENAIR_BUILD_DIR $ENV{OPENAIR_DIR}/cmake_targets
)
set
(
OPENAIR1_DIR $ENV{OPENAIR1_DIR}
)
set
(
OPENAIR2_DIR $ENV{OPENAIR2_DIR}
)
...
...
common/utils/telnetsrv/load_telnet.h
deleted
100644 → 0
View file @
30abbdf8
#ifndef TELNET_LOAD_H
#define TELNET_LOAD_H
#include "telnetsrv.h"
extern
int
load_telnet
(
void
);
#endif
common/utils/telnetsrv/telnetsrv.h
View file @
16eb4509
#ifndef TELNETSRV_H
#define TELNETSRV_H
#define TELNETSRV_
SHAREDLIB "libtelnetsrv.so
"
#define TELNETSRV_
MODNAME "telnetsrv
"
#define TELNET_PORT 9090
#define TELNET_MAX_MSGLENGTH 2048
...
...
@@ -80,7 +80,7 @@ typedef struct {
typedef
int
(
*
addcmdfunc_t
)(
char
*
,
telnetshell_vardef_t
*
,
telnetshell_cmddef_t
*
);
typedef
int
(
*
initfunc_t
)(
char
*
cfgfile
);
typedef
void
(
*
settelnetmodule_t
)(
char
*
name
,
void
*
ptr
);
/*-------------------------------------------------------------------------------------------*/
...
...
targets/RT/USER/lte-softmodem.c
View file @
16eb4509
...
...
@@ -50,7 +50,7 @@
#include "PHY/defs.h"
#include "common/ran_context.h"
#include "common/config/config_userapi.h"
#include "common/utils/
telnetsrv/load_telnet
.h"
#include "common/utils/
load_module_shlib
.h"
#undef MALLOC //there are two conflicting definitions, so we better make sure we don't use it at all
//#undef FRAME_LENGTH_COMPLEX_SAMPLES //there are two conflicting definitions, so we better make sure we don't use it at all
...
...
@@ -559,6 +559,7 @@ static void get_options(void) {
int
dumpframe
;
uint32_t
online_log_messages
;
uint32_t
glog_level
,
glog_verbosity
;
uint32_t
start_telnetsrv
;
paramdef_t
cmdline_params
[]
=
CMDLINE_PARAMS_DESC
;
paramdef_t
cmdline_logparams
[]
=
CMDLINE_LOGPARAMS_DESC
;
...
...
@@ -586,6 +587,10 @@ static void get_options(void) {
if
(
config_isparamset
(
cmdline_logparams
,
CMDLINE_GLOGLEVEL_IDX
))
{
set_glog
(
-
1
,
glog_verbosity
);
}
if
(
start_telnetsrv
)
{
load_module_shlib
(
"telnetsrv"
);
}
if
(
UE_flag
>
0
)
{
paramdef_t
cmdline_uemodeparams
[]
=
CMDLINE_UEMODEPARAMS_DESC
;
...
...
targets/RT/USER/lte-softmodem.h
View file @
16eb4509
...
...
@@ -172,6 +172,7 @@ extern int16_t dlsch_demod_shift;
#define CONFIG_HLP_FLOG "Enable online log \n"
#define CONFIG_HLP_LOGL "Set the global log level, valide options: (9:trace, 8/7:debug, 6:info, 4:warn, 3:error)\n"
#define CONFIG_HLP_LOGV "Set the global log verbosity \n"
#define CONFIG_HLP_TELN "Start embedded telnet server \n"
/*---------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
/* command line parameters for LOG utility */
/* optname helpstr paramflags XXXptr defXXXval type numelt */
...
...
@@ -179,12 +180,13 @@ extern int16_t dlsch_demod_shift;
#define CMDLINE_LOGPARAMS_DESC { \
{"R" , CONFIG_HLP_FLOG, 0, uptr:&online_log_messages, defintval:1, TYPE_INT, 0}, \
{"g" , CONFIG_HLP_LOGL, 0, uptr:&glog_level, defintval:0, TYPE_UINT, 0}, \
{"G" , CONFIG_HLP_LOGV, 0, uptr:&glog_verbosity, defintval:0, TYPE_UINT16, 0}, \
{"G" , CONFIG_HLP_LOGV, 0, uptr:&glog_verbosity, defintval:0, TYPE_UINT16, 0}, \
{"telnetsrv", CONFIG_HLP_TELN, PARAMFLAG_BOOL, uptr:&start_telnetsrv, defintval:0, TYPE_UINT, 0}, \
}
#define CMDLINE_ONLINELOG_IDX 0
#define CMDLINE_GLOGLEVEL_IDX 1
#define CMDLINE_GLOGVERBO_IDX 2
#define CMDLINE_STARTTELN_IDX 3
extern
int
T_port
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment