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
spbro
OpenXG-RAN
Commits
df72429b
Commit
df72429b
authored
Nov 24, 2021
by
Melissa Elkadi
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'eurecom-episys-merge-nsa' into episys/master-nsa
parents
ba5fa308
92ef60d0
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
12 additions
and
272 deletions
+12
-272
cmake_targets/CMakeLists.txt
cmake_targets/CMakeLists.txt
+0
-2
cmake_targets/gdb-helper
cmake_targets/gdb-helper
+0
-13
cmake_targets/gdb.txt
cmake_targets/gdb.txt
+0
-195
cmake_targets/sudo-gdb
cmake_targets/sudo-gdb
+0
-6
common/utils/LOG/log.c
common/utils/LOG/log.c
+8
-13
common/utils/LOG/log.h
common/utils/LOG/log.h
+0
-10
common/utils/ocp_itti/intertask_interface.cpp
common/utils/ocp_itti/intertask_interface.cpp
+1
-1
executables/nr-gnb.c
executables/nr-gnb.c
+2
-28
executables/nr-softmodem.c
executables/nr-softmodem.c
+1
-4
No files found.
cmake_targets/CMakeLists.txt
View file @
df72429b
...
...
@@ -2846,7 +2846,6 @@ add_executable(lte-softmodem
${
OPENAIR_DIR
}
/common/utils/utils.c
${
OPENAIR_DIR
}
/common/utils/system.c
${
PHY_INTERFACE_DIR
}
/queue_t.c
${
GTPU_need_ITTI
}
${
OPENAIR_DIR
}
/common/utils/lte/ue_power.c
${
OPENAIR_DIR
}
/common/utils/lte/prach_utils.c
${
XFORMSINTERFACE_SOURCE
}
...
...
@@ -3034,7 +3033,6 @@ add_executable(nr-softmodem
${
OPENAIR_DIR
}
/common/utils/lte/prach_utils.c
${
OPENAIR_DIR
}
/common/utils/nr/nr_common.c
${
PHY_INTERFACE_DIR
}
/queue_t.c
${
GTPU_need_ITTI
}
${
XFORMSINTERFACE_SOURCE
}
${
T_SOURCE
}
${
CONFIG_SOURCES
}
...
...
cmake_targets/gdb-helper
deleted
100755 → 0
View file @
ba5fa308
#!/bin/bash
cd
"
$(
dirname
"
$0
"
)
/.."
||
exit
source
oaienv
cd
cmake_targets
||
exit
cmd
=(
./ran_build/build/lte-softmodem
-O
../ci-scripts/conf_files/rcc.band7.tm1.nfapi.conf
--noS1
"
$@
"
)
exec sudo
-E
gdb
"
$@
"
--args
"
${
cmd
[@]
}
"
cmake_targets/gdb.txt
deleted
100644 → 0
View file @
ba5fa308
-------------------------------------------------------------------------------
Build.
Make sure you've built with debug info:
cd ~/openairinterface5g # or wherever
source oaienv
cd cmake_targets
./build_oai --UE --eNB --verbose-compile --run-with-gdb RelWithDebInfo
make -C ran_build/build -j4 lte-softmodem lte-uesoftmodem
-------------------------------------------------------------------------------
Verify.
Verify the build was done correctly:
$ ./gdb-helper
...
Reading symbols from ./ran_build/build/lte-softmodem...done.
(gdb) b main
Breakpoint 1 at 0x59f110: file /local/episys/openairinterface5g/targets/RT/USER/lte-softmodem.c, line 516.
(gdb) run
Starting program: /local/episys/openairinterface5g/cmake_targets/ran_build/build/lte-softmodem -O ../ci-scripts/conf_files/rcc.band7.tm1.nfapi.conf --noS1
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Breakpoint 1, main (argc=4, argv=0x7fffffffe058) at /local/episys/openairinterface5g/targets/RT/USER/lte-softmodem.c:516
516 {
(gdb) list
511 pthread_mutex_unlock(&nfapi_sync_mutex);
512 printf( "NFAPI: got sync (%s)\n", thread_name);
513 }
514
515 int main ( int argc, char **argv )
516 {
517 struct sched_param param =
518 {
519 .sched_priority = 79
520 };
(gdb) n
521 if (sched_setscheduler( 0, SCHED_RR, ¶m ) == -1 )
(gdb) quit
A debugging session is active.
Inferior 1 [process 19964] will be killed.
Quit anyway? (y or n) y
$
If gdb says "no debugging symbols found" then clean your workspace and re-do
the build as above.
(gdb) b main
-------------------------------------------------------------------------------
Password-less sudo.
Vscode launches lte-softmodem via sudo. Make sure sudo does not prompt you
for a password:
sudo -n id
If that command fails, do the following:
echo "$USER ALL=(ALL) NOPASSWD: ALL" | sudo tee -a /etc/sudoers
Then verify:
sudo -n id
-------------------------------------------------------------------------------
Vscode.
Launch Vscode:
cd ~/openairinterface5g # or wherever
code . targets/RT/USER/lte-softmodem.c .vscode/launch.json
See launch.json for details about how vscode launches lte-softmodem for debugging.
For example, in lte-softmodem.c, scroll to main() and click the line number to
the left of main to add a breakpoint. then do Run => Start debugging (F5) to
run lte-softmodem in the debugger
-------------------------------------------------------------------------------
Running Vscode remotely.
Currently, running Vscode remotely (via an X-Windows connection) does not work
-- the Vscode window appears but remains blank. Presumably the Vscode
developers will fix this problem eventually. Meanwhile, you can use `sshfs`
to make the remote filesystem appear locally and then run Vscode locally.
On the local machine:
$ remote=surfer # or whatever the remote machine's name is
$ mkdir ~/openairinterface5g
$ sshfs $remote:openairinterface5g ~/openairinterface5g
$ ls ~/openairinterface5g
CHANGELOG.md CONTRIBUTING.md nfapi openair3 targets
...
$ code ~/openairinterface5g
$
The remote and local pathnames of your openairinterface5g workspace should be
the same. If they're different, use a symlink on the local machine to make
the remote pathnames work locally. This part is important because executables
built on $remote contain references to the source files and vscode & gdb will
use those pathnames to find the source files.
You may want to locally mount the remote logs directory, too:
$ mkdir ~/logs
$ sshfs $remote:logs ~/logs
$ ls -l ~/logs
total 40
lrwxrwxrwx 1 1002 1002 22 Jan 17 11:54 latest -> logs-2021-01-17-085419
drwxr-xr-x 1 1002 1002 4096 Jan 17 11:54 logs-2021-01-17-085419
$
That will give you access to core files collected by lte_testscript.py, for
example.
$ file ~/logs/latest/0001/coredump-6699
/home/michael/logs/latest/0001/coredump-6699: ELF 64-bit LSB core file,
x86-64, version 1 (SYSV), SVR4-style, from './ran_build/build/lte-softmodem
-O ../ci-scripts/conf_files/rcc.band7.tm1.nfapi', real uid: 0, effective
uid: 0, real gid: 0, effective gid: 0, execfn:
'./ran_build/build/lte-softmodem', platform: 'x86_64'
$
$ file ~/openairinterface5g/cmake_targets/ran_build/build/lte-softmodem
/home/michael/openairinterface5g/cmake_targets/ran_build/build/lte-softmodem:
ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked,
interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32,
BuildID[sha1]=831400d4aae5d43b94ef3b22ebbd635107de48ae, with debug_info, not
stripped
$
Verify gdb can access these remote files:
$ gdb ~/openairinterface5g/cmake_targets/ran_build/build/lte-softmodem \
~/logs/latest/0001/coredump-6699
...
Program terminated with signal SIGABRT, Aborted.
#0 0x00007f7fd7d11438 in ?? ()
[Current thread is 1 (LWP 39)]
(gdb)
If this step is too slow, you may want to copy the executable and coredump
files to the local machine first.
$ scp -C $remote:openairinterface5g/cmake_targets/ran_build/build/lte-softmodem .
$ scp -C $remote:logs/latest/0001/coredump-6699 .
$ gdb lte-softmodem coredump-6699
Note, the local and remote machines should be the same version of Linux (e.g.,
both Ubuntu 16.04). Otherwise, gdb will likely have trouble understanding the
coredump.
To load the coredump into Vscode, modify launch.json to add "coreDumpPath".
You may also need to modify the "program" path and delete "miDebuggerPath".
--- .vscode/launch.json
+++ .vscode/launch.json
@@ -9,7 +9,7 @@
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
- "program": "${workspaceFolder}/cmake_targets/ran_build/build/lte-so
+ "program": "/home/michael/tmp/lte-softmodem",
"args": [
"-O", "../ci-scripts/conf_files/rcc.band7.tm1.nfapi.conf",
"--noS1"
@@ -19,14 +19,14 @@
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
- "miDebuggerPath": "${workspaceFolder}/cmake_targets/sudo-gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
- ]
+ ],
+ "coreDumpPath": "/home/michael/tmp/coredump-6699"
}
]
}
Then, in Vscode click the debug icon on the left navigation bar, then click
the green "play" triangle near the upper left corner of the window. See the
"CALL STACK" near the lower left of the window.
-------------------------------------------------------------------------------
cmake_targets/sudo-gdb
deleted
100755 → 0
View file @
ba5fa308
#!/bin/bash
# Helper script for Vscode. See .vscode/launch.json "miDebuggerPath"
cd
"
$(
dirname
"
$0
"
)
/.."
||
exit
source
oaienv
cd
cmake_targets
||
exit
exec sudo
-nE
gdb
"
$@
"
common/utils/LOG/log.c
View file @
df72429b
...
...
@@ -562,19 +562,14 @@ static int log_header(char *log_buffer,
const
char
*
format
)
{
char
threadname
[
PR_SET_NAME
];
struct
timespec
ts
;
if
(
clock_gettime
(
CLOCK_MONOTONIC
,
&
ts
)
==
-
1
)
abort
();
return
snprintf
(
log_buffer
,
buffsize
,
"%lu.%06lu %s%s[%s]%c %s %s%s"
,
ts
.
tv_sec
,
ts
.
tv_nsec
/
1000
,
log_level_highlight_end
[
level
],
(
(
g_log
->
flag
&
FLAG_NOCOLOR
)
?
""
:
log_level_highlight_start
[
level
]),
g_log
->
log_component
[
comp
].
name
,
(
(
g_log
->
flag
&
FLAG_LEVEL
)
?
g_log
->
level2string
[
level
]
:
' '
),
(
(
g_log
->
flag
&
FLAG_THREAD
)
?
log_getthreadname
(
threadname
,
PR_SET_NAME
+
1
)
:
""
),
format
,
log_level_highlight_end
[
level
]);
return
snprintf
(
log_buffer
,
buffsize
,
"%s%s[%s]%c %s %s%s"
,
log_level_highlight_end
[
level
],
(
(
g_log
->
flag
&
FLAG_NOCOLOR
)
?
""
:
log_level_highlight_start
[
level
]),
g_log
->
log_component
[
comp
].
name
,
(
(
g_log
->
flag
&
FLAG_LEVEL
)
?
g_log
->
level2string
[
level
]
:
' '
),
(
(
g_log
->
flag
&
FLAG_THREAD
)
?
log_getthreadname
(
threadname
,
PR_SET_NAME
+
1
)
:
""
),
format
,
log_level_highlight_end
[
level
]);
}
void
logRecord_mt
(
const
char
*
file
,
...
...
common/utils/LOG/log.h
View file @
df72429b
...
...
@@ -106,22 +106,12 @@ 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_WITH_COLORS 1
#if LOG_WITH_COLORS
#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 */
#define LOG_BLUE "\033[34m"
/*!< \brief VT100 sequence for blue foreground */
#define LOG_CYBL "\033[40;36m"
/*!< \brief VT100 sequence for cyan foreground on black background */
#define LOG_RESET "\033[0m"
/*!< \brief VT100 sequence for reset (black) foreground */
#else
# define LOG_RED ""
# define LOG_GREEN ""
# define LOG_ORANGE ""
# define LOG_BLUE ""
# define LOG_CYBL ""
# define LOG_RESET ""
#endif // LOG_WITH_COLORS
/* @}*/
...
...
common/utils/ocp_itti/intertask_interface.cpp
View file @
df72429b
...
...
@@ -82,7 +82,7 @@ extern "C" {
void
*
itti_malloc
(
task_id_t
origin_task_id
,
task_id_t
destination_task_id
,
ssize_t
size
)
{
void
*
ptr
=
NULL
;
AssertFatal
((
ptr
=
calloc
(
1
,
size
))
!=
NULL
,
"Memory allocation of %zu bytes failed (%d -> %d)!
\n
"
,
AssertFatal
((
ptr
=
calloc
(
size
,
1
))
!=
NULL
,
"Memory allocation of %zu bytes failed (%d -> %d)!
\n
"
,
size
,
origin_task_id
,
destination_task_id
);
return
ptr
;
}
...
...
executables/nr-gnb.c
View file @
df72429b
...
...
@@ -238,34 +238,8 @@ void rx_func(void *param) {
if
(
pthread_mutex_unlock
(
&
rnti_to_remove_mutex
))
exit
(
1
);
// RX processing
int
tx_slot_type
;
int
rx_slot_type
;
if
(
NFAPI_MODE
!=
NFAPI_MONOLITHIC
)
{
//slot selection routines not working properly in nfapi, so temporarily hardcoding
if
((
slot_tx
==
8
)
||
(
slot_tx
==
9
)
||
(
slot_tx
==
18
)
||
(
slot_tx
==
19
))
{
//tx slot config
tx_slot_type
=
NR_UPLINK_SLOT
;
}
else
if
((
slot_tx
==
7
)
||
(
slot_tx
==
17
))
{
tx_slot_type
=
NR_MIXED_SLOT
;
}
else
{
tx_slot_type
=
NR_DOWNLINK_SLOT
;;
}
if
((
slot_rx
==
8
)
||
(
slot_rx
==
9
)
||
(
slot_rx
==
18
)
||
(
slot_rx
==
19
))
{
// rx slot config
rx_slot_type
=
NR_UPLINK_SLOT
;
}
else
if
((
slot_rx
==
7
)
||
(
slot_rx
==
17
))
{
rx_slot_type
=
NR_MIXED_SLOT
;
}
else
{
rx_slot_type
=
NR_DOWNLINK_SLOT
;;
}
}
else
{
tx_slot_type
=
nr_slot_select
(
cfg
,
frame_tx
,
slot_tx
);
rx_slot_type
=
nr_slot_select
(
cfg
,
frame_rx
,
slot_rx
);
}
int
tx_slot_type
=
nr_slot_select
(
cfg
,
frame_tx
,
slot_tx
);
int
rx_slot_type
=
nr_slot_select
(
cfg
,
frame_rx
,
slot_rx
);
if
(
rx_slot_type
==
NR_UPLINK_SLOT
||
rx_slot_type
==
NR_MIXED_SLOT
)
{
// UE-specific RX processing for subframe n
// TODO: check if this is correct for PARALLEL_RU_L1_TRX_SPLIT
...
...
executables/nr-softmodem.c
View file @
df72429b
...
...
@@ -633,7 +633,7 @@ void init_pdcp(void) {
LOG_I
(
PDCP
,
"node is DU, rlc send pdcp_data_ind by proto_agent
\n
"
);
pdcp_set_pdcp_data_ind_func
((
pdcp_data_ind_func_t
)
proto_agent_send_pdcp_data_ind
);
}
}
else
if
(
get_softmodem_params
()
->
nsa
)
{
}
else
{
pdcp_layer_init
();
uint32_t
pdcp_initmask
=
(
IS_SOFTMODEM_NOS1
)
?
(
PDCP_USE_NETLINK_BIT
|
LINK_ENB_PDCP_TO_IP_DRIVER_BIT
)
:
LINK_ENB_PDCP_TO_GTPV1U_BIT
;
...
...
@@ -646,9 +646,6 @@ void init_pdcp(void) {
nr_pdcp_module_init
(
pdcp_initmask
,
0
);
pdcp_set_rlc_data_req_func
((
send_rlc_data_req_func_t
)
rlc_data_req
);
pdcp_set_pdcp_data_ind_func
((
pdcp_data_ind_func_t
)
pdcp_data_ind
);
}
else
{
LOG_I
(
PDCP
,
"node is DU, rlc send pdcp_data_ind by proto_agent
\n
"
);
pdcp_set_pdcp_data_ind_func
((
pdcp_data_ind_func_t
)
proto_agent_send_pdcp_data_ind
);
}
}
...
...
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